{
  "openapi": "3.1.0",
  "info": {
    "title": "Contacts APIs",
    "description": "Standalone WHOIS contact management: create, update, search, and delete contacts;\ndefault contact sets; TLD-specific validation (.CA, .UK, Singapore ID).\n",
    "version": "2.0.0"
  },
  "servers": [
    {
      "url": "https://api.sandbox.resellerclub.com/v2",
      "description": "Sandbox"
    },
    {
      "url": "https://api.resellerclub.com/v2",
      "description": "Live"
    }
  ],
  "security": [
    {
      "apiKeyAuth": [],
      "userIdHeader": []
    }
  ],
  "paths": {
    "/contacts/default": {
      "put": {
        "tags": [
          "APIs"
        ],
        "summary": "Update default contacts for a customer",
        "description": "Sets a default contact for the Customer.",
        "operationId": "updateDefaultContacts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDefaultContactsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateDefaultContactsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        },
        "x-v2-response-schema": "UpdateDefaultContactsResponse"
      },
      "post": {
        "tags": [
          "APIs"
        ],
        "summary": "Get default contacts for a customer",
        "description": "Gets the details of the Default Contacts for the Customer.",
        "operationId": "getDefaultContacts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDefaultContactsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetDefaultContactsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        },
        "x-v2-response-schema": "GetDefaultContactsResponse"
      }
    },
    "/contacts": {
      "get": {
        "tags": [
          "APIs"
        ],
        "summary": "Search contacts",
        "description": "This method provides detailed information of the contacts that match the search criteria.",
        "operationId": "searchContacts",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "The Customer for which you want to get the Contact Details",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Array of Contact Ids for listing of specific Contacts",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "List of Contact statuses. These can take any values from: InActive , Active , Suspended , Deleted",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Name of Contact",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "company",
            "in": "query",
            "description": "Name of the Company",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Email address of the Contact",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of records requested. Accepted range: 10 to 500.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page Number for which records are required",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Type of contact. Valid values are: Contact , CoopContact , UkContact , EuContact , Sponsor , CnContact , CoContact , CaContact , DeContact , EsContact .",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeInvalid",
            "in": "query",
            "description": "Use this option to include details of invalid contacts. Such contacts are not returned by default.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/SearchContactsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        },
        "x-v2-response-schema": "SearchContactsResponse"
      },
      "post": {
        "tags": [
          "APIs"
        ],
        "summary": "Create a contact",
        "description": "Adds a Contact to the domain using the details provided.",
        "operationId": "createContact",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContactRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateContactResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        },
        "x-v2-response-schema": "CreateContactResponse"
      }
    },
    "/contacts/{contactId}": {
      "get": {
        "tags": [
          "APIs"
        ],
        "summary": "Get contact details",
        "description": "Gets the details for the specified Contact.",
        "operationId": "getContact",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The Contact Id for which details are required",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetContactResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        },
        "x-v2-response-schema": "GetContactResponse"
      },
      "delete": {
        "tags": [
          "APIs"
        ],
        "summary": "Delete a contact",
        "description": "Deletes the specified Contact.",
        "operationId": "deleteContact",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The Contact that you want to delete",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteContactResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        },
        "x-v2-response-schema": "DeleteContactResponse"
      }
    }
  },
  "components": {
    "schemas": {
      "GenericResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "customLogMessage": {}
        }
      },
      "UpdateDefaultContactsRequest": {
        "type": "object",
        "description": "Sets a default contact for the Customer.",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int32",
            "description": "The Customer for whom you want to set the Default Contacts"
          },
          "type": {
            "type": "string",
            "description": "Type of default contact to be returned. It can be one or more of following contacts types : Contact , CoopContact , UkContact , EuContact , CnContact , CoContact , CaContact , DeContact , EsContact .",
            "minLength": 1
          },
          "registrantContactId": {
            "type": "integer",
            "format": "int32",
            "description": "The Registrant Contact of the domain name."
          },
          "adminContactId": {
            "type": "integer",
            "format": "int32",
            "description": "The Administrative Contact of the domain name. Note Pass -1 for the following TLDs: .EU .NZ .RU .UK"
          },
          "techContactId": {
            "type": "integer",
            "format": "int32",
            "description": "The Technical Contact of the domain name. Note Pass -1 for the following TLDs: .EU .NZ .RU .UK"
          },
          "billingContactId": {
            "type": "integer",
            "format": "int32",
            "description": "The Billing Contact of the domain name. Note Pass -1 for the following TLDs: .AT .BERLIN .CA .EU .NL .NZ .RU .UK .LONDON"
          }
        },
        "required": [
          "adminContactId",
          "billingContactId",
          "customerId",
          "registrantContactId",
          "techContactId",
          "type"
        ]
      },
      "DefaultContactIdsDto": {
        "type": "object",
        "description": "Default contact role identifiers.",
        "properties": {
          "registrantContactId": {
            "type": "string",
            "description": "Registrant contact identifier."
          },
          "adminContactId": {
            "type": "string",
            "description": "Administrative contact identifier."
          },
          "techContactId": {
            "type": "string",
            "description": "Technical contact identifier."
          },
          "billingContactId": {
            "type": "string",
            "description": "Billing contact identifier."
          }
        }
      },
      "CreateContactRequest": {
        "type": "object",
        "description": "Adds a Contact to the domain using the details provided.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the contact. Max length 255 characters (general) or 50 characters (.EU).\nFor AtContact, the name must consist of at least two words.",
            "minLength": 1
          },
          "company": {
            "type": "string",
            "description": "Company name. Max length 255 (general) or 100 (.EU). EuContact may use NA when no company.\nRuContact requires at least two words or N A / Not Applicable. EsContact registrant individuals\nmust omit company; admin/tech/billing contacts must be natural persons without company."
          },
          "email": {
            "type": "string",
            "description": "Email address of the contact.",
            "minLength": 1
          },
          "addressLine1": {
            "type": "string",
            "description": "First address line. Max length 64 characters. NycContact requires a physical NYC street address.",
            "minLength": 1
          },
          "addressLine2": {
            "type": "string",
            "description": "Second line of address (optional)."
          },
          "addressLine3": {
            "type": "string",
            "description": "Third line of address (optional)."
          },
          "city": {
            "type": "string",
            "description": "City name. Max length 64 characters.",
            "minLength": 1
          },
          "state": {
            "description": "State or province. Max length 64 characters.\nWhen type is EsContact, use a Spanish province code from the allowed values table.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| Albacete | Province of Albacete |\n| Alicante | Province of Alicante |\n| Almeria | Province of Almería |\n| Araba | Province of Araba |\n| Asturias | Province of Asturias |\n| Avila | Province of Ávila |\n| Badajoz | Province of Badajoz |\n| Barcelona | Province of Barcelona |\n| Bizkaia | Province of Bizkaia |\n| Burgos | Province of Burgos |\n| Caceres | Province of Cáceres |\n| Cadiz | Province of Cádiz |\n| Cantabria | Province of Cantabria |\n| Castellon | Province of Castellón |\n| Ceuta | Autonomous city of Ceuta |\n| Ciudad Real | Province of Ciudad Real |\n| Cordoba | Province of Córdoba |\n| Coruña, A | Province of A Coruña |\n| Cuenca | Province of Cuenca |\n| Gipuzkoa | Province of Gipuzkoa |\n| Girona | Province of Girona |\n| Granada | Province of Granada |\n| Guadalajara | Province of Guadalajara |\n| Huelva | Province of Huelva |\n| Huesca | Province of Huesca |\n| Illes Balears | Balearic Islands |\n| Jaen | Province of Jaén |\n| Leon | Province of León |\n| Lleida | Province of Lleida |\n| Lugo | Province of Lugo |\n| Madrid | Province of Madrid |\n| Malaga | Province of Málaga |\n| Melilla | Autonomous city of Melilla |\n| Murcia | Region of Murcia |\n| Navarra | Province of Navarra |\n| Ourense | Province of Ourense |\n| Palencia | Province of Palencia |\n| Palmas, Las | Province of Las Palmas |\n| Pontevedra | Province of Pontevedra |\n| Rioja, La | Province of La Rioja |\n| Santa Cruz de Tenerife | Province of Santa Cruz de Tenerife |\n| Segovia | Province of Segovia |\n| Sevilla | Province of Sevilla |\n| Soria | Province of Soria |\n| Tarragona | Province of Tarragona |\n| Teruel | Province of Teruel |\n| Toledo | Province of Toledo |\n| Valencia | Province of Valencia |\n| Valladolid | Province of Valladolid |\n| Zamora | Province of Zamora |\n| Zaragoza | Province of Zaragoza |",
            "enum": [
              "Albacete",
              "Alicante",
              "Almeria",
              "Araba",
              "Asturias",
              "Avila",
              "Badajoz",
              "Barcelona",
              "Bizkaia",
              "Burgos",
              "Caceres",
              "Cadiz",
              "Cantabria",
              "Castellon",
              "Ceuta",
              "Ciudad Real",
              "Cordoba",
              "Coruña, A",
              "Cuenca",
              "Gipuzkoa",
              "Girona",
              "Granada",
              "Guadalajara",
              "Huelva",
              "Huesca",
              "Illes Balears",
              "Jaen",
              "Leon",
              "Lleida",
              "Lugo",
              "Madrid",
              "Malaga",
              "Melilla",
              "Murcia",
              "Navarra",
              "Ourense",
              "Palencia",
              "Palmas, Las",
              "Pontevedra",
              "Rioja, La",
              "Santa Cruz de Tenerife",
              "Segovia",
              "Sevilla",
              "Soria",
              "Tarragona",
              "Teruel",
              "Toledo",
              "Valencia",
              "Valladolid",
              "Zamora",
              "Zaragoza"
            ],
            "example": null
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code. UkServiceContact allows only GB, IM, JE, or GG.",
            "minLength": 1
          },
          "zipcode": {
            "type": "string",
            "description": "ZIP or postal code. Max length 10 (general) or 16 (.EU). Validated against country.",
            "minLength": 1
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Telephone country code. Between 1 and 3 digits.",
            "minLength": 1
          },
          "phone": {
            "type": "string",
            "description": "Telephone number. Between 4-12 digits (general) or 4-13 digits (.RU).",
            "minLength": 1
          },
          "faxCountryCode": {
            "type": "string",
            "description": "Fax country code (optional). Between 1 and 3 digits."
          },
          "fax": {
            "type": "string",
            "description": "Fax number (optional). Between 4-12 digits (general) or 4-13 digits (.RU)."
          },
          "customerId": {
            "type": "integer",
            "format": "int32",
            "description": "Customer under whom the contact is created."
          },
          "type": {
            "description": "Contact type determining which TLD-specific extra fields apply.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| Contact | Standard contact |\n| AtContact | Austria (.AT) contact — name must have at least two words |\n| BrContact | Brazil admin/technical/billing contact — must not include organisationId |\n| BrOrgContact | Brazil registrant contact — requires organisationId (CPF/CNPJ) |\n| CaContact | Canada (.CA) contact — registrant requires CPR and agreement fields |\n| ClContact | Chile (.CL) contact |\n| CnContact | China (.CN) contact — may require organisationVerificationId |\n| CoContact | Colombia (.CO) contact |\n| CoopContact | Co-operative (.COOP) registrant — requires sponsorReference |\n| DeContact | Germany (.DE) contact |\n| EsContact | Spain (.ES) contact — requires esFormJuridica fields; state must be Spanish province |\n| EuContact | European Union (.EU) contact — may require countryOfCitizenship |\n| FrContact | France (.FR) contact |\n| MxContact | Mexico (.MX) contact |\n| NlContact | Netherlands (.NL) contact — requires legalForm on all contacts |\n| NycContact | New York City (.NYC) contact — requires NYC street address |\n| RuContact | Russia (.RU) contact — requires contractType and RU-specific fields |\n| UkContact | United Kingdom (.UK) contact |\n| UkServiceContact | UK service contact — country must be GB, IM, JE, or GG |",
            "enum": [
              "Contact",
              "AtContact",
              "BrContact",
              "BrOrgContact",
              "CaContact",
              "ClContact",
              "CnContact",
              "CoContact",
              "CoopContact",
              "DeContact",
              "EsContact",
              "EuContact",
              "FrContact",
              "MxContact",
              "NlContact",
              "NycContact",
              "RuContact",
              "UkContact",
              "UkServiceContact"
            ],
            "minLength": 1,
            "example": null
          },
          "locality": {
            "type": "string",
            "description": "Two-letter ISO 3166-1 alpha-2 country code for the contact locality.\nRequired when associating a contact with a .ASIA domain.\nExample: IN (India)."
          },
          "legalEntityType": {
            "description": "Legal entity type of the registrant.\nRequired when associating a contact with a .ASIA domain.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| naturalPerson | Natural person |\n| corporation | Corporation |\n| cooperative | Cooperative |\n| partnership | Partnership |\n| government | Government |\n| politicalParty | Political party |\n| society | Society |\n| institution | Institution |\n| other | Other (requires otherLegalEntityType) |",
            "enum": [
              "naturalPerson",
              "corporation",
              "cooperative",
              "partnership",
              "government",
              "politicalParty",
              "society",
              "institution",
              "other"
            ],
            "example": null
          },
          "otherLegalEntityType": {
            "type": "string",
            "description": "Free-text description of the legal entity type. Required when legalEntityType is other.\nApplies to .ASIA domain contacts."
          },
          "identForm": {
            "description": "Form of identity document.\nRequired when associating a contact with a .ASIA domain.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| passport | Passport |\n| certificate | Certificate |\n| legislation | Legislation |\n| societyRegistry | Society registry |\n| politicalPartyRegistry | Political party registry |\n| other | Other (requires otherIdentForm) |",
            "enum": [
              "passport",
              "certificate",
              "legislation",
              "societyRegistry",
              "politicalPartyRegistry",
              "other"
            ],
            "example": null
          },
          "otherIdentForm": {
            "type": "string",
            "description": "Free-text description of the identity form. Required when identForm is other.\nApplies to .ASIA domain contacts."
          },
          "identNumber": {
            "type": "string",
            "description": "Identification document number for the chosen identForm.\nRequired when associating a contact with a .ASIA domain."
          },
          "organisationId": {
            "type": "string",
            "description": "Brazilian tax ID (CPF) for an individual or organisation ID (CNPJ) for a company.\nOnly Brazilian nationals or organizations can register .BR domains; this value must\neither not already be registered in the registrar database or have transferred\nauthority to the registrar through the .BR registry web interface.\nRequired only for BrOrgContact (registrant). Admin, technical, and billing contacts\nmust use BrContact and must not include this value.\nExample: a valid CPF for an individual registrant or CNPJ for a company registrant."
          },
          "cpr": {
            "description": "Three-letter Canadian Presence Requirement (CPR) code for the registrant category.\nRequired on the registrant contact for .CA domains.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| CCO | Corporation (Canada or Canadian province or territory) — Non-individual |\n| CCT | Canadian citizen — Individual |\n| RES | Permanent Resident of Canada — Individual |\n| GOV | Government or government entity in Canada — Non-individual |\n| EDU | Canadian Educational institution — Non-individual |\n| ASS | Canadian Unincorporated Association — Non-individual |\n| HOP | Canadian Hospital — Non-individual |\n| PRT | Partnership Registered in Canada — Non-individual |\n| TDM | Trade-mark registered in Canada (by a non-Canadian owner) — Non-individual |\n| TRD | Canadian Trade union — Non-individual |\n| PLT | Canadian Political party — Non-individual |\n| LAM | Canadian Library, Archive or Museum — Non-individual |\n| TRS | Trust established in Canada — Non-individual |\n| ABO | Aboriginal Peoples (individuals or groups) indigenous to Canada — Individual |\n| INB | Indian Band recognized by the Indian Act of Canada — Non-individual |\n| LGR | Legal Representative of a Canadian Citizen or Permanent Resident — Individual |\n| OMK | Official mark registered in Canada — Non-individual |\n| MAJ | Her Majesty the Queen — Non-individual |",
            "enum": [
              "CCO",
              "CCT",
              "RES",
              "GOV",
              "EDU",
              "ASS",
              "HOP",
              "PRT",
              "TDM",
              "TRD",
              "PLT",
              "LAM",
              "TRS",
              "ABO",
              "INB",
              "LGR",
              "OMK",
              "MAJ"
            ],
            "example": null
          },
          "agreementVersion": {
            "type": "string",
            "description": "Agreement version string returned by the GetRegistrantAgreement API.\nRequired on the registrant contact for .CA domains together with agreementValue."
          },
          "agreementValue": {
            "description": "Registrant agreement acceptance flag.\nRequired on the registrant contact for .CA domains together with agreementVersion.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| y | Registrant agrees to the .CA Registrant Agreement |",
            "enum": [
              "y"
            ],
            "example": null
          },
          "sponsorReference": {
            "type": "string",
            "description": "Sponsor ROID (co-operative reference) to associate with the contact.\nRequired on the registrant contact for .COOP domains.\nExample: 12345."
          },
          "organisationVerificationId": {
            "type": "string",
            "description": "Organization verification ID — any ID associated with the organization.\nRequired when associating a contact with a .CN domain."
          },
          "esFormJuridica": {
            "description": "Spanish legal entity type code. The registrant may be a natural person or company;\nadmin, technical, and billing contacts must be natural persons only.\nRequired when associating a contact with a .ES domain.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| 1 | Natural person or individual |\n| 39 | Economic Interest Grouping |\n| 47 | Association |\n| 59 | Sports Association |\n| 68 | Trade Association |\n| 124 | Savings Bank |\n| 150 | Community Property |\n| 152 | Condominium |\n| 164 | Religious Order or Institution |\n| 181 | Consulate |\n| 197 | Public Law Association |\n| 203 | Embassy |\n| 229 | Municipality |\n| 269 | Sports Federation |\n| 286 | Foundation |\n| 365 | Mutual Insurance Company |\n| 434 | Provincial Government Body |\n| 436 | National Government Body |\n| 439 | Political Party |\n| 476 | Trade Union |\n| 510 | Farm Partnership |\n| 524 | Public Limited Company / Corporation |\n| 525 | Sports Public Limited Company |\n| 554 | Partnership |\n| 560 | General Partnership |\n| 562 | Limited Partnership |\n| 566 | Cooperative |\n| 608 | Worker-owned Company |\n| 612 | Limited Liability Company |\n| 713 | Spanish (company) Branch |\n| 717 | Temporary Consortium / Joint Venture |\n| 744 | Worker-owned Limited Company |\n| 745 | Provincial Government Entity |\n| 746 | National Government Entity |\n| 747 | Local Government Entity |\n| 877 | Others |\n| 878 | Designation of Origin Regulatory Council |\n| 879 | Natural Area Management Entity |",
            "enum": [
              "1",
              "39",
              "47",
              "59",
              "68",
              "124",
              "150",
              "152",
              "164",
              "181",
              "197",
              "203",
              "229",
              "269",
              "286",
              "365",
              "434",
              "436",
              "439",
              "476",
              "510",
              "524",
              "525",
              "554",
              "560",
              "562",
              "566",
              "608",
              "612",
              "713",
              "717",
              "744",
              "745",
              "746",
              "747",
              "877",
              "878",
              "879"
            ],
            "example": null
          },
          "esTipoIdentificacion": {
            "description": "Spanish identification document type.\nRequired when associating a contact with a .ES domain.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| 1 | DNI or NIF — Spanish National Personal ID or company VAT ID number |\n| 3 | NIE — Spanish resident alien ID number |\n| 0 | Other ID — Passport, foreign ID, company registration, driver's license, etc. |",
            "enum": [
              "1",
              "3",
              "0"
            ],
            "example": null
          },
          "esIdentificacion": {
            "type": "string",
            "description": "Identification number matching the chosen esTipoIdentificacion.\nRequired when associating a contact with a .ES domain.\nExample: a DNI/NIF or NIE number."
          },
          "countryOfCitizenship": {
            "type": "string",
            "description": "Two-letter ISO 3166-1 alpha-2 country code for citizenship.\nRequired for .EU registrant contacts when the registrant is an individual and the\ncountry of residence is outside the EU/EEA.\nExample: US."
          },
          "jobsTitle": {
            "type": "string",
            "description": "Job title of the contact at the company.\nRequired on all contacts for .JOBS domains."
          },
          "jobsWebsite": {
            "type": "string",
            "description": "Company website URL.\nRequired on all contacts for .JOBS domains."
          },
          "jobsIndustryType": {
            "type": "string",
            "description": "Industry classification for the business the company conducts.\nRequired on all contacts for .JOBS domains."
          },
          "jobsIsAdminContact": {
            "description": "Whether this contact is the administrative contact.\nRequired on all contacts for .JOBS domains.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| true | True |\n| false | False |",
            "enum": [
              "true",
              "false"
            ],
            "example": null
          },
          "jobsIsAssociationMember": {
            "description": "Whether the company is an association member.\nRequired on all contacts for .JOBS domains.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| true | True |\n| false | False |",
            "enum": [
              "true",
              "false"
            ],
            "example": null
          },
          "legalForm": {
            "description": "Dutch legal form.\nRequired on all contacts for .NL domains.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| PERSOON | Natural person |\n| ANDERS | Other legal form |",
            "enum": [
              "PERSOON",
              "ANDERS"
            ],
            "example": null
          },
          "contractType": {
            "description": "Russian contact classification.\nMandatory when associating a contact with a .RU domain.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| ORG | Organization contact — requires org-r, address-r, and Russian org tax fields when applicable |\n| PRS | Individual contact — requires birth-date, person-r, and passport |",
            "enum": [
              "ORG",
              "PRS"
            ],
            "example": null
          },
          "birthDate": {
            "type": "string",
            "description": "Birth date in DD.MM.YYYY format. Mandatory for individual (PRS) .RU contacts.\nExample: 08.08.1900."
          },
          "orgR": {
            "type": "string",
            "description": "Legally registered company name as on company formation documents, preferably in\nRussian, with at least two words. Mandatory for organization (ORG) .RU contacts."
          },
          "personR": {
            "type": "string",
            "description": "Registrant full name, preferably in Russian. Mandatory for individual (PRS) .RU contacts.\nExample: Ivan Ivanov."
          },
          "addressR": {
            "type": "string",
            "description": "Registrant address, preferably in Russian, with at least two words for organizations.\nMandatory for organization (ORG) .RU contacts."
          },
          "kpp": {
            "type": "string",
            "description": "9-digit territory-linked taxpayer number (KPP). Mandatory for Russian organization\n(ORG) .RU contacts when the country is Russia.\nExample: 123456789."
          },
          "code": {
            "type": "string",
            "description": "10-digit taxpayer identification number (TIN). Mandatory for Russian organization\n(ORG) .RU contacts when the country is Russia.\nExample: 0987654321."
          },
          "ruPassport": {
            "type": "string",
            "description": "Passport details for individual (PRS) .RU contacts: document number, issued by,\nand issued date.\nExample: 12 34 567890, issued by the 123 police station of Moscow, 30.01.1990."
          },
          "usPurpose": {
            "description": "US nexus application purpose for the registrant.\nRequired on the registrant contact for .US domains.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| P1 | Business use for profit |\n| P2 | Non-profit business, club, association, religious organization, etc. |\n| P3 | Personal use |\n| P4 | Education purposes |\n| P5 | Government purposes |",
            "enum": [
              "P1",
              "P2",
              "P3",
              "P4",
              "P5"
            ],
            "example": null
          },
          "usCategory": {
            "description": "US nexus category for the registrant.\nRequired on the registrant contact for .US domains.\n\n### Allowed values\n\n| Value | Description |\n|-------|-------------|\n| C11 | Natural person who is a United States citizen |\n| C12 | Natural person who is a permanent resident of the United States or its possessions or territories |\n| C21 | US-based organization or company formed under US state, DC, territory, or federal law |\n| C31 | Foreign entity or organization with a bona fide presence in the United States |\n| C32 | Entity has an office or other facility in the United States |",
            "enum": [
              "C11",
              "C12",
              "C21",
              "C31",
              "C32"
            ],
            "example": null
          }
        },
        "required": [
          "addressLine1",
          "city",
          "country",
          "customerId",
          "email",
          "name",
          "phone",
          "phoneCountryCode",
          "type",
          "zipcode"
        ]
      },
      "GetDefaultContactsRequest": {
        "type": "object",
        "description": "Gets the details of the Default Contacts for the Customer.",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int32",
            "description": "The Customer for whom you want to get the Default Contacts"
          },
          "type": {
            "type": "string",
            "description": "Type of default contact to be returned. It can be one or more of following contacts types : Contact , CoopContact , UkContact , EuContact , CnContact , CoContact , CaContact , DeContact , EsContact .",
            "minLength": 1
          }
        },
        "required": [
          "customerId",
          "type"
        ]
      },
      "ContactProfileDto": {
        "type": "object",
        "description": "Contact profile fields.",
        "properties": {
          "contactId": {
            "type": "string",
            "description": "Contact identifier."
          },
          "customerId": {
            "type": "string",
            "description": "Customer identifier."
          },
          "name": {
            "type": "string",
            "description": "Contact name."
          },
          "company": {
            "type": "string",
            "description": "Company name."
          },
          "type": {
            "type": "string",
            "description": "Contact type."
          },
          "email": {
            "type": "string",
            "description": "Email address."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Telephone country code."
          },
          "phone": {
            "type": "string",
            "description": "Telephone number."
          },
          "faxCountryCode": {
            "type": "string",
            "description": "Fax country code."
          },
          "fax": {
            "type": "string",
            "description": "Fax number."
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1."
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2."
          },
          "addressLine3": {
            "type": "string",
            "description": "Address line 3."
          },
          "city": {
            "type": "string",
            "description": "City."
          },
          "state": {
            "type": "string",
            "description": "State or province."
          },
          "country": {
            "type": "string",
            "description": "Country code."
          },
          "zipcode": {
            "type": "string",
            "description": "Postal or ZIP code."
          },
          "currentStatus": {
            "type": "string",
            "description": "Current contact status."
          },
          "contactStatus": {
            "type": "string",
            "description": "Contact status detail."
          },
          "parentKey": {
            "type": "string",
            "description": "Parent key reference."
          },
          "passwd": {
            "type": "string"
          },
          "contactType": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "className": {
            "type": "string"
          },
          "classKey": {
            "type": "string"
          },
          "roid": {
            "type": "string"
          },
          "actionCompleted": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "entityTypeId": {
            "type": "string"
          },
          "jumpConditions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "creationDate": {
            "type": "string",
            "description": "Contact creation date."
          },
          "timestamp": {
            "type": "string",
            "description": "Last update timestamp."
          },
          "valid": {
            "type": "boolean",
            "description": "Boolean. Whether the contact is valid. Possible values are true or false."
          },
          "whoisValidity": {
            "$ref": "#/components/schemas/WhoisValidityDto",
            "description": "WHOIS validation details when returned in the response."
          },
          "designatedAgent": {
            "type": "boolean",
            "description": "Boolean. Whether the contact is a designated agent. Possible values are true or false."
          }
        }
      },
      "WhoisValidityDto": {
        "type": "object",
        "description": "WHOIS validation status for a contact.",
        "properties": {
          "valid": {
            "type": "boolean",
            "description": "Boolean. Whether the contact passes WHOIS validation. Possible values are true or false."
          },
          "invalidData": {
            "type": "array",
            "description": "Validation issues. String entries are returned as-is; object entries are serialized as JSON strings.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ContactSearchResultDto": {
        "type": "object",
        "description": "Contact summary in search results.",
        "properties": {
          "contactId": {
            "type": "string",
            "description": "Contact identifier."
          },
          "name": {
            "type": "string",
            "description": "Contact name."
          },
          "company": {
            "type": "string",
            "description": "Company name."
          },
          "type": {
            "type": "string",
            "description": "Contact type."
          },
          "email": {
            "type": "string",
            "description": "Email address."
          },
          "whoisValidity": {
            "$ref": "#/components/schemas/WhoisValidityDto",
            "description": "WHOIS validation details when returned in the response."
          },
          "currentStatus": {
            "type": "string"
          },
          "phone": {
            "type": "string",
            "description": "Telephone number."
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Telephone country code."
          },
          "entityId": {
            "type": "string",
            "description": "Entity identifier."
          },
          "customerId": {
            "type": "string",
            "description": "Customer identifier."
          },
          "creationDate": {
            "type": "string",
            "description": "Contact creation date."
          },
          "timestamp": {
            "type": "string",
            "description": "Last update timestamp."
          },
          "description": {
            "type": "string"
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1."
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2."
          },
          "addressLine3": {
            "type": "string",
            "description": "Address line 3."
          },
          "city": {
            "type": "string",
            "description": "City."
          },
          "state": {
            "type": "string",
            "description": "State or province."
          },
          "country": {
            "type": "string",
            "description": "Country code."
          },
          "zipcode": {
            "type": "string",
            "description": "Postal or ZIP code."
          },
          "fax": {
            "type": "string",
            "description": "Fax number."
          },
          "faxCountryCode": {
            "type": "string",
            "description": "Fax country code."
          }
        }
      },
      "CreateContactResponse": {
        "type": "object",
        "description": "Returns the identifier of the newly created contact.",
        "properties": {
          "contactId": {
            "type": "string",
            "description": "Contact identifier of the newly added contact."
          }
        }
      },
      "DeleteContactResponse": {
        "type": "object",
        "description": "Returns the result of deleting the contact, including action tracking metadata.",
        "properties": {
          "actionStatus": {
            "type": "string",
            "description": "Status of the associated action."
          },
          "actionStatusDesc": {
            "type": "string",
            "description": "Description of the action status."
          },
          "actionTypeDesc": {
            "type": "string",
            "description": "Description of the action type."
          },
          "entityId": {
            "type": "string",
            "description": "Entity identifier associated with the action."
          },
          "eaqId": {
            "type": "string",
            "description": "Action queue identifier."
          },
          "actionType": {
            "type": "string",
            "description": "Action type identifier."
          },
          "currentAction": {
            "type": "string",
            "description": "Current action state."
          },
          "description": {
            "type": "string",
            "description": "Additional description of the action."
          },
          "status": {
            "type": "string",
            "description": "Overall status when the request fails."
          },
          "message": {
            "type": "string",
            "description": "Error details when the request fails."
          }
        }
      },
      "GetContactResponse": {
        "type": "object",
        "description": "Returns the contact profile for the requested contact.",
        "properties": {
          "contact": {
            "$ref": "#/components/schemas/ContactProfileDto",
            "description": "Contact profile details."
          },
          "status": {
            "type": "string",
            "description": "Overall status when the request fails."
          },
          "message": {
            "type": "string",
            "description": "Error details when the request fails."
          }
        }
      },
      "GetDefaultContactsResponse": {
        "type": "object",
        "description": "Returns the default contact identifiers for the customer.",
        "properties": {
          "defaults": {
            "$ref": "#/components/schemas/DefaultContactIdsDto",
            "description": "Default contact identifiers by role."
          },
          "registrantContact": {
            "$ref": "#/components/schemas/ContactProfileDto",
            "description": "Registrant contact profile when returned in the response."
          },
          "adminContact": {
            "$ref": "#/components/schemas/ContactProfileDto",
            "description": "Administrative contact profile when returned in the response."
          },
          "techContact": {
            "$ref": "#/components/schemas/ContactProfileDto",
            "description": "Technical contact profile when returned in the response."
          },
          "billingContact": {
            "$ref": "#/components/schemas/ContactProfileDto",
            "description": "Billing contact profile when returned in the response."
          },
          "actionStatus": {
            "type": "string",
            "description": "Status of the associated action."
          },
          "actionStatusDesc": {
            "type": "string",
            "description": "Description of the action status."
          },
          "actionTypeDesc": {
            "type": "string",
            "description": "Description of the action type."
          },
          "entityId": {
            "type": "string",
            "description": "Entity identifier associated with the action."
          },
          "eaqId": {
            "type": "string",
            "description": "Action queue identifier."
          },
          "actionType": {
            "type": "string",
            "description": "Action type identifier."
          },
          "type": {
            "type": "string",
            "description": "Contact type."
          },
          "status": {
            "type": "string",
            "description": "Overall status when the request fails."
          },
          "message": {
            "type": "string",
            "description": "Error details when the request fails."
          },
          "transactionId": {
            "type": "string"
          }
        }
      },
      "SearchContactsResponse": {
        "type": "object",
        "description": "Returns contacts matching the search criteria, with pagination.",
        "properties": {
          "totalItems": {
            "type": "integer",
            "format": "int32",
            "description": "Total contacts matching the search."
          },
          "itemsOnPage": {
            "type": "integer",
            "format": "int32",
            "description": "Contacts returned on this page."
          },
          "contacts": {
            "type": "array",
            "description": "Matching contact entries.",
            "items": {
              "$ref": "#/components/schemas/ContactSearchResultDto"
            }
          }
        }
      },
      "UpdateDefaultContactsResponse": {
        "type": "object",
        "description": "Returns the default contact identifiers for the customer.",
        "properties": {
          "defaults": {
            "$ref": "#/components/schemas/DefaultContactIdsDto",
            "description": "Default contact identifiers by role."
          },
          "actionStatus": {
            "type": "string",
            "description": "Status of the associated action."
          },
          "actionStatusDesc": {
            "type": "string",
            "description": "Description of the action status."
          },
          "actionTypeDesc": {
            "type": "string",
            "description": "Description of the action type."
          },
          "entityId": {
            "type": "string",
            "description": "Entity identifier associated with the action."
          },
          "eaqId": {
            "type": "string",
            "description": "Action queue identifier."
          },
          "actionType": {
            "type": "string",
            "description": "Action type identifier."
          },
          "type": {
            "type": "string",
            "description": "Contact type."
          },
          "status": {
            "type": "string",
            "description": "Overall status when the request fails."
          },
          "message": {
            "type": "string",
            "description": "Error details when the request fails."
          },
          "transactionId": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "apiKey",
        "description": "Reseller API key. In your own requests, send the full header value: Authorization: ApiKey YOUR_API_KEY",
        "name": "Authorization",
        "in": "header"
      },
      "userIdHeader": {
        "type": "apiKey",
        "description": "Reseller user ID",
        "name": "X-User-Id",
        "in": "header"
      }
    }
  },
  "tags": [
    {
      "name": "APIs"
    }
  ]
}