{
  "openapi": "3.1.0",
  "info": {
    "title": "Customers APIs",
    "description": "Customer APIs: signup, profile retrieval, order history, and account suspend or unsuspend.\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": {
    "/customers/{customerId}": {
      "get": {
        "tags": [
          "APIs"
        ],
        "summary": "Get customer by ID",
        "description": "Returns the customer profile for the requested account.",
        "operationId": "getCustomerById",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Customer Id (required).",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomerResponse"
                }
              }
            }
          },
          "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": "GetCustomerResponse"
      },
      "put": {
        "tags": [
          "APIs"
        ],
        "summary": "Update customer details",
        "description": "Modifies the Account details of the specified Customer.",
        "operationId": "updateCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateCustomerResponse"
                }
              }
            }
          },
          "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": "UpdateCustomerResponse"
      },
      "delete": {
        "tags": [
          "APIs"
        ],
        "summary": "Delete a customer account",
        "description": "Deletes the specified Customer.",
        "operationId": "deleteCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Customer Id (required).",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCustomerResponse"
                }
              }
            }
          },
          "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": "DeleteCustomerResponse"
      }
    },
    "/customers/{customerId}/suspension": {
      "put": {
        "tags": [
          "APIs"
        ],
        "summary": "Suspend or unsuspend a customer account",
        "description": "Suspends or unsuspends a customer account.",
        "operationId": "updateCustomerSuspension",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerSuspensionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateCustomerSuspensionResponse"
                }
              }
            }
          },
          "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"
                }
              }
            }
          }
        }
      }
    },
    "/customers": {
      "get": {
        "tags": [
          "APIs"
        ],
        "summary": "Search customers",
        "description": "Returns customers matching the search criteria, with pagination.",
        "operationId": "searchCustomers",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer Id.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "Reseller Id.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "username",
            "in": "query",
            "description": "Username.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Name.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "company",
            "in": "query",
            "description": "Company.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "City.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "State.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Status.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creationDateStart",
            "in": "query",
            "description": "Creation Date Start.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creationDateEnd",
            "in": "query",
            "description": "Creation Date End.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "totalReceiptStart",
            "in": "query",
            "description": "Total Receipt Start.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "totalReceiptEnd",
            "in": "query",
            "description": "Total Receipt End.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page (required).",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Size (required).",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/SearchCustomersResponse"
                }
              }
            }
          },
          "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": "SearchCustomersResponse"
      },
      "post": {
        "tags": [
          "APIs"
        ],
        "summary": "Create a customer account",
        "description": "Creates a Customer Account using the details provided.",
        "operationId": "createCustomer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCustomerResponse"
                }
              }
            }
          },
          "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": "CreateCustomerResponse"
      }
    },
    "/customers/{customerId}/password": {
      "post": {
        "tags": [
          "APIs"
        ],
        "summary": "Change customer password",
        "description": "Changes the password for the specified Customer.",
        "operationId": "changeCustomerPassword",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeCustomerPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeCustomerPasswordResponse"
                }
              }
            }
          },
          "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": "ChangeCustomerPasswordResponse"
      }
    },
    "/customers/{customerId}/orders": {
      "get": {
        "tags": [
          "APIs"
        ],
        "summary": "List customer orders",
        "description": "Returns orders for the customer, with pagination.",
        "operationId": "listCustomerOrders",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Customer Id (required).",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Status.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Size.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "onlyRecurring",
            "in": "query",
            "description": "Only Recurring.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ListCustomerOrdersResponse"
                }
              }
            }
          },
          "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": "ListCustomerOrdersResponse"
      }
    },
    "/customers/by-username": {
      "get": {
        "tags": [
          "APIs"
        ],
        "summary": "Get customer by username",
        "description": "Returns the customer profile for the requested account.",
        "operationId": "getCustomerByUsername",
        "parameters": [
          {
            "name": "username",
            "in": "query",
            "description": "Username (required).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomerResponse"
                }
              }
            }
          },
          "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": "GetCustomerResponse"
      }
    }
  },
  "components": {
    "schemas": {
      "GenericResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "customLogMessage": {}
        }
      },
      "UpdateCustomerRequest": {
        "type": "object",
        "description": "Modifies the Account details of the specified Customer.",
        "properties": {
          "username": {
            "type": "string",
            "description": "Username for the Customer account. Username should be an email address.",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "Name of the Customer",
            "minLength": 1
          },
          "company": {
            "type": "string",
            "description": "Company name of the Customer",
            "minLength": 1
          },
          "languagePreference": {
            "type": "string",
            "description": "Language Code as per ISO",
            "minLength": 1
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1 of the Customer's address",
            "minLength": 1
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2 of the customer's address"
          },
          "addressLine3": {
            "type": "string",
            "description": "Address line 3 of the Customer's address"
          },
          "city": {
            "type": "string",
            "description": "City",
            "minLength": 1
          },
          "state": {
            "type": "string",
            "description": "State. In case the State information is not available, you need to pass the value for this parameter as Not Applicable .",
            "minLength": 1
          },
          "otherState": {
            "type": "string",
            "description": "This parameter needs to be included if the State information is not available. Mention an appropriate value for this parameter."
          },
          "country": {
            "type": "string",
            "description": "Country Code as per ISO 3166-1 alpha-2",
            "minLength": 1
          },
          "zipcode": {
            "type": "string",
            "description": "ZIP code",
            "minLength": 1
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Phone number Country Code",
            "minLength": 1
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "minLength": 1
          },
          "altPhoneCountryCode": {
            "type": "string",
            "description": "Alternate phone Country Code"
          },
          "altPhone": {
            "type": "string",
            "description": "Alternate phone number"
          },
          "faxCountryCode": {
            "type": "string",
            "description": "Fax number Country Code"
          },
          "fax": {
            "type": "string",
            "description": "Fax number"
          },
          "mobileCountryCode": {
            "type": "string",
            "description": "Mobile country code"
          },
          "mobile": {
            "type": "string",
            "description": "Mobile number"
          },
          "vatId": {
            "type": "string",
            "description": "VAT ID for EU VAT"
          },
          "indianServiceTaxId": {
            "type": "string",
            "description": "Indian Service Tax Id."
          },
          "indianGstId": {
            "type": "string",
            "description": "GST ID for Indian customer"
          },
          "russiaVatId": {
            "type": "string",
            "description": "VAT ID for Russian customer"
          },
          "australiaGstId": {
            "type": "string",
            "description": "GST ID for Australia customer"
          },
          "newzealandGstId": {
            "type": "string",
            "description": "GST ID for New Zealand customer"
          },
          "singaporeGstId": {
            "type": "string",
            "description": "GST ID for Singapore customer"
          },
          "smsConsent": {
            "type": "boolean",
            "description": "Boolean. SMS consent. Possible values are true or false."
          }
        },
        "required": [
          "addressLine1",
          "city",
          "company",
          "country",
          "languagePreference",
          "name",
          "phone",
          "phoneCountryCode",
          "state",
          "username",
          "zipcode"
        ]
      },
      "UpdateCustomerSuspensionRequest": {
        "type": "object",
        "description": "Suspends or unsuspends a customer account.",
        "properties": {
          "suspended": {
            "type": "boolean",
            "description": "When true, suspends the customer; when false, unsuspends."
          },
          "reason": {
            "type": "string",
            "description": "Suspension reason (required when suspended is true)."
          }
        },
        "required": [
          "suspended"
        ]
      },
      "CreateCustomerRequest": {
        "type": "object",
        "description": "Creates a Customer Account using the details provided.",
        "properties": {
          "username": {
            "type": "string",
            "description": "Username for the Customer Account. Username should be an email address.",
            "minLength": 1
          },
          "password": {
            "type": "string",
            "description": "Password for the Customer Account. Note Password related information",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "Name of the Customer",
            "minLength": 1
          },
          "company": {
            "type": "string",
            "description": "Name of the Customer's company",
            "minLength": 1
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1 of the Customer's address",
            "minLength": 1
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2 of the Customer's address"
          },
          "addressLine3": {
            "type": "string",
            "description": "Address line 3 of the Customer's address"
          },
          "city": {
            "type": "string",
            "description": "City",
            "minLength": 1
          },
          "state": {
            "type": "string",
            "description": "State. In case the State information is not available, you need to pass the value for this parameter as Not Applicable .",
            "minLength": 1
          },
          "otherState": {
            "type": "string",
            "description": "This parameter needs to be included if the State information is not available. Mention an appropriate value for this parameter."
          },
          "country": {
            "type": "string",
            "description": "Country Code as per ISO 3166-1 alpha-2",
            "minLength": 1
          },
          "zipcode": {
            "type": "string",
            "description": "ZIP code",
            "minLength": 1
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Telephone number Country Code",
            "minLength": 1
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "minLength": 1
          },
          "altPhoneCountryCode": {
            "type": "string",
            "description": "Alternate phone country code"
          },
          "altPhone": {
            "type": "string",
            "description": "Alternate phone number"
          },
          "faxCountryCode": {
            "type": "string",
            "description": "Fax number country code"
          },
          "fax": {
            "type": "string",
            "description": "Fax number"
          },
          "languagePreference": {
            "type": "string",
            "description": "Language Code as per ISO"
          },
          "mobileCountryCode": {
            "type": "string",
            "description": "Mobile country code"
          },
          "mobile": {
            "type": "string",
            "description": "Mobile number"
          },
          "vatId": {
            "type": "string",
            "description": "VAT ID for EU VAT"
          },
          "indianServiceTaxId": {
            "type": "string",
            "description": "Indian Service Tax Id."
          },
          "indianGstId": {
            "type": "string",
            "description": "Indian Gst Id."
          },
          "salesTaxExemptionId": {
            "type": "string",
            "description": "Sales Tax Exemption Id."
          },
          "russiaVatId": {
            "type": "string",
            "description": "Russia Vat Id."
          },
          "australiaGstId": {
            "type": "string",
            "description": "Australia Gst Id."
          },
          "newzealandGstId": {
            "type": "string",
            "description": "Newzealand Gst Id."
          },
          "singaporeGstId": {
            "type": "string",
            "description": "Singapore Gst Id."
          },
          "paraguayTaxId": {
            "type": "string",
            "description": "Paraguay Tax Id."
          },
          "dontSendSignupEmail": {
            "type": "boolean",
            "description": "Boolean. Dont Send Signup Email. Possible values are true or false."
          },
          "smsConsent": {
            "type": "boolean",
            "description": "Boolean. In case of a US based customer, consent is required to receive renewal reminder SMSes. Possible values are true or false."
          },
          "acceptPolicy": {
            "type": "boolean",
            "description": "Boolean. Accept Terms and Conditions and Privacy Policy to create an account. Possible values are true or false."
          },
          "marketingEmailConsent": {
            "type": "boolean",
            "description": "Boolean. In case of EEA (European Economic Area) countries capture consent to receive marketing emails. Possible values are true or false."
          }
        },
        "required": [
          "addressLine1",
          "city",
          "company",
          "country",
          "name",
          "password",
          "phone",
          "phoneCountryCode",
          "state",
          "username",
          "zipcode"
        ]
      },
      "ChangeCustomerPasswordRequest": {
        "type": "object",
        "description": "Changes the password for the specified Customer.",
        "properties": {
          "newPassword": {
            "type": "string",
            "description": "Must be 8-15 characters and contain at least one letter and one digit. Symbols are permitted.",
            "maxLength": 15,
            "minLength": 8
          }
        },
        "required": [
          "newPassword"
        ]
      },
      "CustomerSearchResultDto": {
        "type": "object",
        "description": "Customer summary in search results.",
        "properties": {
          "customerId": {
            "type": "string",
            "description": "Customer identifier"
          },
          "username": {
            "type": "string",
            "description": "Username"
          },
          "name": {
            "type": "string",
            "description": "Name"
          },
          "company": {
            "type": "string",
            "description": "Company"
          },
          "email": {
            "type": "string",
            "description": "Email"
          },
          "city": {
            "type": "string",
            "description": "City"
          },
          "country": {
            "type": "string",
            "description": "Country"
          },
          "customerStatus": {
            "type": "string",
            "description": "Customer status"
          },
          "totalReceipts": {
            "type": "string",
            "description": "Total receipts"
          },
          "phone": {
            "type": "string"
          },
          "phoneCountryCode": {
            "type": "string"
          },
          "resellerId": {
            "type": "string"
          },
          "websiteCount": {
            "type": "string"
          }
        }
      },
      "CustomerProfileDto": {
        "type": "object",
        "description": "Customer profile fields.",
        "properties": {
          "customerId": {
            "type": "string",
            "description": "Customer identifier"
          },
          "username": {
            "type": "string",
            "description": "Customer username (email)"
          },
          "resellerId": {
            "type": "string",
            "description": "Reseller identifier"
          },
          "parentId": {
            "type": "string",
            "description": "Parent customer identifier"
          },
          "name": {
            "type": "string",
            "description": "Customer name"
          },
          "company": {
            "type": "string",
            "description": "Company name"
          },
          "email": {
            "type": "string",
            "description": "Email address"
          },
          "phoneCountryCode": {
            "type": "string",
            "description": "Phone country code"
          },
          "phone": {
            "type": "string",
            "description": "Phone number"
          },
          "mobileCountryCode": {
            "type": "string",
            "description": "Mobile country code"
          },
          "mobile": {
            "type": "string",
            "description": "Mobile number"
          },
          "altPhoneCountryCode": {
            "type": "string",
            "description": "Alternate phone country code"
          },
          "altPhone": {
            "type": "string",
            "description": "Alternate phone number"
          },
          "faxCountryCode": {
            "type": "string",
            "description": "Fax number country code"
          },
          "fax": {
            "type": "string",
            "description": "Fax number"
          },
          "indianGstId": {
            "type": "string",
            "description": "Indian GST identification 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"
          },
          "stateId": {
            "type": "string",
            "description": "State identifier"
          },
          "country": {
            "type": "string",
            "description": "Country code"
          },
          "zipcode": {
            "type": "string",
            "description": "Postal or ZIP code"
          },
          "pin": {
            "type": "string",
            "description": "PIN code"
          },
          "creationDate": {
            "type": "string",
            "description": "Account creation date"
          },
          "customerStatus": {
            "type": "string",
            "description": "Customer account status"
          },
          "salesContactId": {
            "type": "string",
            "description": "Sales contact identifier"
          },
          "salesRepresentative": {
            "type": "string",
            "description": "Sales representative display name"
          },
          "languagePreference": {
            "type": "string",
            "description": "Language preference"
          },
          "totalReceipts": {
            "type": "string",
            "description": "Total receipts amount"
          },
          "isDominicanTaxConfiguredByParent": {
            "type": "boolean",
            "description": "Boolean. Whether Dominican tax is configured by the parent reseller. Possible values are true or false."
          },
          "vatId": {
            "type": "string",
            "description": "VAT or tax identification number for the customer"
          },
          "otherState": {
            "type": "string",
            "description": "Alternate or supplemental state/province value in responses"
          },
          "salesPersons": {
            "type": "array",
            "description": "Sales persons associated with the customer account",
            "items": {
              "$ref": "#/components/schemas/CustomerSalesPersonDto"
            }
          },
          "rncId": {
            "type": "string"
          },
          "ncfType": {
            "type": "string"
          },
          "dominicanRepublicTaxDisplayName": {
            "type": "string"
          }
        }
      },
      "CustomerSalesPersonDto": {
        "type": "object",
        "description": "Sales person entry associated with a customer account.",
        "properties": {
          "salesPersonId": {
            "type": "string",
            "description": "Sales person identifier"
          },
          "name": {
            "type": "string",
            "description": "Sales person display name"
          }
        }
      },
      "CustomerOrderSummaryDto": {
        "type": "object",
        "description": "Order summary in customer order list.",
        "properties": {
          "orderId": {
            "type": "string",
            "description": "Order identifier"
          },
          "customerId": {
            "type": "string",
            "description": "Customer identifier"
          },
          "resellerId": {
            "type": "string",
            "description": "Reseller identifier"
          },
          "entityTypeId": {
            "type": "string",
            "description": "Entity type identifier"
          },
          "entityTypeKey": {
            "type": "string",
            "description": "Entity type key"
          },
          "entityTypeName": {
            "type": "string",
            "description": "Entity type display name"
          },
          "productKey": {
            "type": "string",
            "description": "Product key"
          },
          "productCategory": {
            "type": "string",
            "description": "Product category code"
          },
          "productCategoryLabel": {
            "type": "string",
            "description": "Product category display label"
          },
          "domainName": {
            "type": "string",
            "description": "Domain name associated with the order"
          },
          "domainNameUnicode": {
            "type": "string",
            "description": "Unicode domain name"
          },
          "status": {
            "type": "string",
            "description": "Current order status"
          },
          "creationDate": {
            "type": "string",
            "description": "Order creation time"
          },
          "endTime": {
            "type": "string",
            "description": "Order end time"
          },
          "deletionTime": {
            "type": "string",
            "description": "Scheduled deletion time"
          },
          "daysToExpiry": {
            "type": "string",
            "description": "Days until expiry"
          },
          "daysToDeletion": {
            "type": "string",
            "description": "Days until deletion"
          },
          "parentKey": {
            "type": "string",
            "description": "Parent key"
          },
          "tenureOfLastActionPerformed": {
            "type": "string",
            "description": "Tenure of the last action performed"
          },
          "recurring": {
            "type": "boolean",
            "description": "Boolean. Whether the order is recurring. Possible values are true or false."
          }
        }
      },
      "ChangeCustomerPasswordResponse": {
        "type": "object",
        "description": "Indicates whether the customer password was changed successfully.",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the password was changed"
          }
        }
      },
      "CreateCustomerResponse": {
        "type": "object",
        "description": "Returns the identifier of the newly created customer account.",
        "properties": {
          "customerId": {
            "type": "string",
            "description": "Newly created customer identifier"
          }
        }
      },
      "DeleteCustomerResponse": {
        "type": "object",
        "description": "Returns the result of deleting the customer account, including action tracking metadata.",
        "properties": {
          "actionStatus": {
            "type": "string",
            "description": "Action status"
          },
          "actionStatusDesc": {
            "type": "string",
            "description": "Action status description"
          },
          "actionTypeDesc": {
            "type": "string",
            "description": "Action type description"
          },
          "entityId": {
            "type": "string",
            "description": "Entity identifier"
          },
          "eaqId": {
            "type": "string",
            "description": "Action queue identifier"
          },
          "actionType": {
            "type": "string",
            "description": "Action type"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "GetCustomerResponse": {
        "type": "object",
        "description": "Returns the customer profile for the requested account.",
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/CustomerProfileDto",
            "description": "Customer profile"
          },
          "passwordExpired": {
            "type": "boolean",
            "description": "Boolean. Whether the password has expired. Possible values are true or false."
          },
          "twoFactorAuthEnabled": {
            "type": "boolean",
            "description": "Boolean. Whether two-factor authentication is enabled. Possible values are true or false."
          },
          "twoFactorGoogleAuthEnabled": {
            "type": "boolean",
            "description": "Boolean. Whether Google two-factor authentication is enabled. Possible values are true or false."
          },
          "twoFactorSmsAuthEnabled": {
            "type": "boolean",
            "description": "Boolean. Whether SMS two-factor authentication is enabled. Possible values are true or false."
          },
          "actionStatus": {
            "type": "string",
            "description": "Action status"
          },
          "actionStatusDesc": {
            "type": "string",
            "description": "Action status description"
          },
          "actionTypeDesc": {
            "type": "string",
            "description": "Action type description"
          },
          "entityId": {
            "type": "string",
            "description": "Entity identifier"
          },
          "eaqId": {
            "type": "string",
            "description": "Action queue identifier"
          },
          "actionType": {
            "type": "string",
            "description": "Action type"
          },
          "status": {
            "type": "string",
            "description": "Operation status"
          },
          "message": {
            "type": "string",
            "description": "Status message"
          }
        }
      },
      "ListCustomerOrdersResponse": {
        "type": "object",
        "description": "Returns orders for the customer, with pagination.",
        "properties": {
          "totalItems": {
            "type": "integer",
            "format": "int32",
            "description": "Total matching records"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of pages"
          },
          "itemsOnPage": {
            "type": "integer",
            "format": "int32",
            "description": "Records on this page"
          },
          "orders": {
            "type": "array",
            "description": "Customer orders",
            "items": {
              "$ref": "#/components/schemas/CustomerOrderSummaryDto"
            }
          },
          "status": {
            "type": "string",
            "description": "Operation status"
          },
          "message": {
            "type": "string",
            "description": "Status message"
          }
        }
      },
      "SearchCustomersResponse": {
        "type": "object",
        "description": "Returns customers matching the search criteria, with pagination.",
        "properties": {
          "totalItems": {
            "type": "integer",
            "format": "int32",
            "description": "Total matching records"
          },
          "itemsOnPage": {
            "type": "integer",
            "format": "int32",
            "description": "Records on this page"
          },
          "customers": {
            "type": "array",
            "description": "Customer search results",
            "items": {
              "$ref": "#/components/schemas/CustomerSearchResultDto"
            }
          }
        }
      },
      "UpdateCustomerResponse": {
        "type": "object",
        "description": "Returns the result of updating the customer profile, including action tracking metadata.",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Status of the operation"
          }
        }
      },
      "UpdateCustomerSuspensionResponse": {
        "type": "object",
        "description": "Result of suspending or unsuspending a customer account.",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Status"
          }
        }
      }
    },
    "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"
    }
  ]
}