{
  "openapi": "3.0.1",
  "info": {
    "title": "API Gateway",
    "version": "v1.0"
  },
  "servers": [
    {
      "url": "https://api.pubtest.nic.it"
    }
  ],
  "paths": {
    "/v1/contract": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get contract information",
        "operationId": "getContract",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/customer": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get customer information",
        "operationId": "getCustomer",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/customer/eInvoicing": {
      "put": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Update of the electronic invoicing data, available only for private italian customers",
        "operationId": "updateEInvoicing",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerEInvoicingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Updated"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/emails": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get registrar e-mail addresses",
        "operationId": "getRegistrarEmails",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailsRegistrar"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "put": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Update registrar e-mail addresses",
        "operationId": "updateRegistrarEmails",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailsRegistrar"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailsRegistrar"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/gdpr/template/{language}": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get GDPR template by language",
        "operationId": "getGDPRTemplate",
        "parameters": [
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "it",
                "en"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GDPRTemplate"
                }
              }
            }
          },
          "400": {
            "description": "Invalid language",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/gdpr": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get registrar GDPR data",
        "operationId": "getGDPR",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GDPRData"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "GDPR data not found for registrar",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "put": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Create or update registrar GDPR data",
        "operationId": "createOrUpdateGDPR",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GDPRRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GDPRData"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GDPRData"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/gdpr/confirm": {
      "put": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Confirm registrar GDPR data",
        "description": "Confirm registrar GDPR data (only lastupdate is updated)",
        "operationId": "confirmGDPR",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GDPRData"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/headQuarter": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get contract headquarter address",
        "operationId": "getHeadQuarter",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeadQuarter"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "put": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Update contract headquarter address",
        "operationId": "updateHeadQuarter",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HeadQuarter"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeadQuarter"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/registrar": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get registrar data",
        "operationId": "getRegistrar",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Registrar"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/registrar/publicInfo": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get registrar public information",
        "operationId": "getRegistrarPublicInfo",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarPublicInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "put": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Update registrar public information",
        "operationId": "updateRegistrarPublicInfo",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistrarPublicInfoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarPublicInfo"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/registrar/events": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Registrar events search",
        "operationId": "getRegistrarEvents",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Search by event type.\n\nSupported operators: eq (default), ne, in, notIn\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "Search by creation date\n\nSupported operators: eq, ne, gt, lt, ge, le, between\n. The created parameter is multiple and can be specified multiple times",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "description": "Required page number (default 0)",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "description": "Required page size (default 20)",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Order field. Order direction default is ascending (asc)\n. The 'sort' parameter is multiple and can be repeated multiple times\n",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedRegistrarEvent"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/registrar/contacts": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Registrar contacts list",
        "operationId": "getRegistrarContactsList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RegistrarContact"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Registrar contact create",
        "operationId": "createRegistrarContact",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistrarContactRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarContact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/registrar/contacts/{registrarContactId}": {
      "get": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Get Registrar contact by id",
        "operationId": "getRegistrarContactById",
        "parameters": [
          {
            "name": "registrarContactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarContact"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Registrar contact not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "put": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Update Registrar contact",
        "operationId": "udpateRegistrarContact",
        "parameters": [
          {
            "name": "registrarContactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistrarContactRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarContact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Registrar contact not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Customer and Registrar"
        ],
        "summary": "Delete Registrar contact by id",
        "operationId": "deleteRegistrarContactById",
        "parameters": [
          {
            "name": "registrarContactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Contact not found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/credit": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get registrar current credit value",
        "operationId": "getCredit",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credit"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/credit/untilDate": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get registrar credit value on a date",
        "description": "Get credit value on the indicated date (included). For example, if you specify the date of '2024-01-09', the credit will be calculated taking into account all variations up to and including '2024-01-09 23:59:59'",
        "operationId": "getCreditUntilDate",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "description": "Date in format YYYY-mm-dd ('2024-01-09')",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditUntilDate"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/credit/warnThreshold": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get the credit threshold set by registrar",
        "operationId": "getCreditWarnThreshold",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditWarnThreshold"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "put": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Update the registrar credit threshold",
        "operationId": "updateCreditWarnThreshold",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreditWarnThreshold"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Payments search",
        "operationId": "searchPayments",
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "description": "Search by total amount\n\nSupported operators: eq (default), ne, gt, lt, ge, le, in, notIn, between\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Search by payment type, values: bank, creditCard, registry, contractTransfer\n\nSupported operators: eq (default), ne, in, notIn\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Search by payment status, values:  submitted, approved, suspended, rejected\n\nSupported operators: eq (default), ne, in, notIn\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "Search by creation date\n\nSupported operators: eq (default), ne, gt, lt, ge, le, between\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page index (0..N)",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size",
            "schema": {
              "type": "integer",
              "default": 20
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Order field. Order direction default is ascending (asc)\n. The 'sort' parameter is multiple and can be repeated multiple times\n",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedPayment"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments/bank": {
      "post": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Create bank payment",
        "operationId": "createBankPayment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BankPaymentCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments/{paymentId}": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get payment by id",
        "operationId": "getPayment",
        "parameters": [
          {
            "name": "paymentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Payment not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments/{paymentId}/report": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get payment report by id",
        "operationId": "getPaymentReport",
        "parameters": [
          {
            "name": "paymentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentReport"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Payment or report not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments/{paymentId}/report/domains": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get payment domains operations",
        "operationId": "getPaymentReportDomains",
        "parameters": [
          {
            "name": "paymentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Payment or report not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments/{paymentId}/invoice": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get invoice by payment id",
        "operationId": "getPaymentInvoice",
        "parameters": [
          {
            "name": "paymentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Invoice"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Payment not found or invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/invoices": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Search invoices",
        "operationId": "searchInvoices",
        "parameters": [
          {
            "name": "paymentId",
            "in": "query",
            "description": "Search by payment id.\nSupported operators: eq (default), ne, in, notIn\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "invoiceNumber",
            "in": "query",
            "description": "Search by invoice number\nSupported operators: eq (default), ne, in, notIn, isNotNull, isNotNull\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "totalAmount",
            "in": "query",
            "description": "Search by invoice total amount\n\nSupported operators: eq (default), ne, gt, lt, ge, le, between\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "documentDate",
            "in": "query",
            "description": "Search by invoice date\n\nSupported operators: eq (default), ne, gt, lt, ge, le, between\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page index(0..N)",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size",
            "schema": {
              "type": "integer",
              "default": 20
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Order field. Order direction default is ascending (asc)\n. The 'sort' parameter is multiple and can be repeated multiple times\n",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedInvoice"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/invoices/{invoiceId}": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get invoice by id",
        "operationId": "getInvoice",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Invoice"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/invoices/{invoiceId}/pdf": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get invoice PDF by id",
        "operationId": "getInvoicePdf",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "byte"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Invoice not found",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "head": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Check invoice PDF availability",
        "operationId": "invoiceHasPdf",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Invoice not found or PDF not available"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/invoices/{invoiceId}/payment": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get Payment by invoice id",
        "operationId": "getInvoicePayment",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments/creditCard/transactions": {
      "post": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Create new credit card transaction",
        "operationId": "createCreditCardTransaction",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreditCardTransactionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditCardTransaction"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "502": {
            "description": "Error contacting credit card gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/payments/creditCard/transactions/{transactionId}": {
      "get": {
        "tags": [
          "Invoices, Payments and Credit"
        ],
        "summary": "Get credit card transaction by id",
        "operationId": "getCreditCardTransaction",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditCardTransaction"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Transaction not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/ipAddresses": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Get enabled ip addresses for a service",
        "operationId": "getIPAddress",
        "parameters": [
          {
            "name": "service",
            "in": "query",
            "description": "Search by service name\n",
            "schema": {
              "type": "string",
              "enum": [
                "epp-server",
                "das"
              ]
            }
          },
          {
            "name": "userId",
            "in": "query",
            "description": "Search by user id\n\nSupported operators: eq (default), ne, in, notIn\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ipAddress",
            "in": "query",
            "description": "Search by ip addresses\n\nSupported operators: eq (default), ne, in, notIn\n\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IpAddressUserRegistrar"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Security"
        ],
        "summary": "Create IP address for service/user",
        "operationId": "createIPAddress",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IpAddressCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IpAddressUserRegistrar"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/ipAddresses/{ipAddressId}": {
      "delete": {
        "tags": [
          "Security"
        ],
        "summary": "Delete IP address for service/user by id",
        "operationId": "deleteIPAddress",
        "parameters": [
          {
            "name": "ipAddressId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "IP Address not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/user": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Get authenticated user data",
        "operationId": "getSelfUser",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/user/groups": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Get authenticated user groups",
        "operationId": "getSelfGroups",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/users": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Search users",
        "operationId": "getUsers",
        "parameters": [
          {
            "name": "username",
            "in": "query",
            "description": "Search by username\n\nSupported operators: eq (default), ne, in, notIn\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Search by user's given name\n\nSupported operators: eq (default), ne, in, notIn, contains, startsWith, endsWith\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastName",
            "in": "query",
            "description": "Search by user's lastname\n\nSupported operators: eq (default), ne, in, notIn, contains, startsWith, endsWith\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Search by users by e-mail address\n\nSupported operators: eq (default), ne, in, notIn\n\n",
            "schema": {
              "type": "string",
              "format": "email"
            }
          },
          {
            "name": "group",
            "in": "query",
            "description": "Search by group\n\nSupported operators: none\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "Search by creation date.\n\nSupported operators: eq (default), ne, in, notIn, ge, gt, le, lt, between\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastupdate",
            "in": "query",
            "description": "Search by last modification date.\n\nSupported operators: eq (default), ne, in, notIn, ge, gt, le, lt, between\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastPasswordChange",
            "in": "query",
            "description": "Search by last password change date.\n\nSupported operators: eq (default), ne, in, notIn, ge, gt, le, lt, between\n\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "description": "Required page number (default 0)",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "description": "Required page size (default 20)",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResourcesRegistrarUser"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Security"
        ],
        "summary": "Create registrar user",
        "operationId": "createUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/users/{userId}": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Get user by id",
        "operationId": "getUserById",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Security"
        ],
        "summary": "Delete user by id",
        "operationId": "deleteUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/users/{userId}/groups": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Get user groups",
        "operationId": "getGroupsByUserId",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "put": {
        "tags": [
          "Security"
        ],
        "summary": "Update user groups",
        "operationId": "updateGroups",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "uniqueItems": true,
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/passwordRequirements": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Get password requirements",
        "operationId": "getPasswordRequirements",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordSettings"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/clients": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "List registrar clients",
        "operationId": "getClients",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Client"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Security"
        ],
        "summary": "Create a client",
        "operationId": "createClient",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Client"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Richiesta in conflitto con esistenti",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/clients/{clientId}/generateKeystore": {
      "post": {
        "tags": [
          "Security"
        ],
        "summary": "Generate client keystore",
        "operationId": "generateClientKeystore",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientKeystoreGenerationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/octet-stream": {}
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Client not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Incompatibile client status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/clients/{clientId}": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Get client by id",
        "operationId": "getClientById",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Client"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Client not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Security"
        ],
        "summary": "Delete a client",
        "operationId": "deleteClient",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Client"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Client not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Search domains",
        "operationId": "searchDomains",
        "parameters": [
          {
            "name": "view",
            "in": "query",
            "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed"
            }
          },
          {
            "name": "domain",
            "in": "query",
            "description": "Search by domain name (only ascii supported)\n\nSupported operators: eq (default), startsWith\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastupdate",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expire",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hostname",
            "in": "query",
            "description": "No operator supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signed",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDomain"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/{domainId}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Find registered domain by id",
        "operationId": "getDomainById",
        "parameters": [
          {
            "name": "domainId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Domain"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Domain not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/{domainId}/events": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Get domain events",
        "operationId": "getDomainEvents",
        "parameters": [
          {
            "name": "domainId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDomainEvents"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Domain not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/findByName/{domainName}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Find registered domain by name. Domain name can be ascii or idn",
        "operationId": "getDomainByName",
        "parameters": [
          {
            "name": "domainName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Domain"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Domain not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/export/all": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Export all registered domains",
        "operationId": "exportAllDomains",
        "parameters": [
          {
            "name": "options",
            "in": "query",
            "description": "Add more information to results. Supported values comma separated: domainDetail, registrant, admin, hosts",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Add more information to results. Supported values comma separated: domainDetail, registrant, admin, hosts"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              },
              "application/jsonl": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/count": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Count domains search results",
        "operationId": "countDomains",
        "parameters": [
          {
            "name": "view",
            "in": "query",
            "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Add more information to results. Supported values comma separated: registrant, admin, techs, hosts, dsRecords, newHosts, newDsRecords, signed"
            }
          },
          {
            "name": "domain",
            "in": "query",
            "description": "Search by domain name (only ascii supported)\n\nSupported operators: eq (default), startsWith\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastupdate",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expire",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hostname",
            "in": "query",
            "description": "No operator supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signed",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/idnConverter": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Convert domain name to punycode or unicode format",
        "operationId": "domainIDNConverter",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IDNConversion"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/contacts": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Search contacts",
        "operationId": "searchContacts",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "description": "Search by org using full-text search. No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Search by org using full-text search. No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string",
              "format": "email"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regcode",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nationality",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ipaCode",
            "in": "query",
            "description": "No operator supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "uoCode",
            "in": "query",
            "description": "No operator supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "schoolCode",
            "in": "query",
            "description": "No operator supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "registrantTye",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "linked",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastupdate",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedContact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/contacts/{id}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Find contact by id",
        "operationId": "getContactById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Contact not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/contacts/findByContactId/{contactId}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Find contact by contact-id assigned by the registrar",
        "operationId": "getContactByContactId",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Contact not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/contacts/export/registrants": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Export all linked registrants",
        "operationId": "exportRegistrants",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              },
              "application/jsonl": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/contacts/count": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Count contacts search results",
        "operationId": "countContacts",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "description": "Search by org using full-text search. No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string",
              "format": "email"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regcode",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nationality",
            "in": "query",
            "description": "Supported operators: eq (default), ne\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ipaCode",
            "in": "query",
            "description": "Supported operators: eq (default), ne, isNull, isNotNull\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "uoCode",
            "in": "query",
            "description": "Supported operators: eq (default), ne, isNull, isNotNull\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "schoolCode",
            "in": "query",
            "description": "Supported operators: eq (default), ne, isNull, isNotNull\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "registrantTye",
            "in": "query",
            "description": "No operators supported\n",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "linked",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastupdate",
            "in": "query",
            "description": "Supported operators: eq (default), ne, ge, gt, le, lt\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/bulkTransfers/{bulkTransferId}": {
      "get": {
        "tags": [
          "Bulk Transfer"
        ],
        "summary": "Get a bulk transfer request by id",
        "operationId": "getBulkTransferById",
        "parameters": [
          {
            "name": "bulkTransferId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTransfer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "",
            "content": {}
          },
          "404": {
            "description": "Bulk Transfer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/bulkTransfers": {
      "get": {
        "tags": [
          "Bulk Transfer"
        ],
        "summary": "Search bulk transfers requests",
        "operationId": "searchBulkTransfers",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedBulkTransfer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "",
            "content": {}
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Domains"
        ],
        "summary": "Create a new bulk transfer request",
        "operationId": "createBulkTransfer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkTransferCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTransfer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Bulk transfer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/bulkTransfers/{bulkTransferId}/events": {
      "get": {
        "tags": [
          "Bulk Transfer"
        ],
        "summary": "Get list of events for a bulk transfer",
        "operationId": "getBulkTransferEventsById",
        "parameters": [
          {
            "name": "bulkTransferId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedBulkTransferEvent"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "",
            "content": {}
          },
          "404": {
            "description": "Bulk Transfer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/bulkTransfers/{bulkTransferId}/domains": {
      "get": {
        "tags": [
          "Bulk Transfer"
        ],
        "summary": "Get list of domains in the bulk transfer request by bulk transfer id",
        "operationId": "getBulkTransferDomainsById",
        "parameters": [
          {
            "name": "bulkTransferId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedBulkTransferDomain"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "",
            "content": {}
          },
          "404": {
            "description": "Bulk transfer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/bulkTransfers/{bulkTransferId}/cancel": {
      "put": {
        "tags": [
          "Bulk Transfer"
        ],
        "summary": "Cancel a bulk transfer request by id",
        "operationId": "cancelBulkTransfer",
        "parameters": [
          {
            "name": "bulkTransferId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Bulk transfer cancelled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTransfer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Bulk transfer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/bulkTransfers/{bulkTransferId}/approve": {
      "put": {
        "tags": [
          "Bulk Transfer"
        ],
        "summary": "Approve a bulk transfer request by id",
        "operationId": "approveBulkTransfer",
        "parameters": [
          {
            "name": "bulkTransferId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkTransferApprove"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Bulk transfer approved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTransfer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Bulk transfer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/domains/bulkTransfers/{bulkTransferId}/pdf-data": {
      "get": {
        "tags": [
          "Bulk Transfer"
        ],
        "summary": "Get a bulk transfer pdf data",
        "operationId": "getBulkTransferPdfData",
        "parameters": [
          {
            "name": "bulkTransferId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTransferPdfDocumentData"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "",
            "content": {}
          },
          "404": {
            "description": "Bulk Transfer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": []
          }
        ]
      }
    },
    "/v1/darwin/contactUpdates": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "List of ContactUpdate for a Darwin request",
        "operationId": "getDarwinContactUpdatesList",
        "parameters": [
          {
            "name": "requestId",
            "in": "query",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 34
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DarwinContactUpdate"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Darwin request not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "Darwin"
        ],
        "summary": "Create a Darwin ContactUpdate for a request",
        "operationId": "createDarwinContactUpdate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DarwinContactUpdate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinContactUpdate"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Darwin request not found"
          },
          "409": {
            "description": "Request status not compatibile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contactUpdates/current": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get current (last inserted) ContactUpdate for a Darwin request",
        "operationId": "getDarwinCurrentContactUpdate",
        "parameters": [
          {
            "name": "requestId",
            "in": "query",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinContactUpdate"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Darwin request or contact update not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contactUpdates/validate": {
      "post": {
        "tags": [
          "Darwin"
        ],
        "summary": "Validate Darwin ContactUpdate data",
        "operationId": "validateDarwinContactUpdate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DarwinContactUpdate"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid request or invalid data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Darwin request or contact update not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contactUpdates/{contactUpdateId}": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get a Darwin ContactUpdate by id",
        "operationId": "getDarwinContactUpdateById",
        "parameters": [
          {
            "name": "contactUpdateId",
            "in": "path",
            "description": "ContactUpdate Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinContactUpdate"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Darwin request or contact update not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contacts": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Search Darwin contacts",
        "operationId": "searchDarwinContacts",
        "parameters": [
          {
            "name": "action",
            "in": "query",
            "schema": {
              "enum": [
                "todo",
                "hold",
                "delete"
              ],
              "type": "string"
            }
          },
          {
            "name": "dbnaId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 0,
              "type": "integer"
            }
          },
          {
            "name": "registrarContactId",
            "in": "query",
            "schema": {
              "description": "Find by contactId assigned by the Registrar",
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDarwinContact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contacts/changeAction/request/{requestId}": {
      "put": {
        "tags": [
          "Darwin"
        ],
        "summary": "Update Darwin all contact action for a request",
        "operationId": "updateDarwinActionForAllContactsByRequestId",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DarwinContactActionUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Darwin request not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contacts/count": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Count search results for Darwin contacts",
        "operationId": "countDarwinContacts",
        "parameters": [
          {
            "name": "action",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinContactAction"
            }
          },
          {
            "name": "dbnaId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "registrarContactId",
            "in": "query",
            "schema": {
              "description": "Find by contactId assigned by the Registrar",
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contacts/{contactId}": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get Darwin contact by id",
        "operationId": "getDarwinContactById",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "Contact Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinContact"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Contact not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Darwin"
        ],
        "summary": "Update Darwin contact action",
        "operationId": "updateDarwinContactActionById",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "Contact Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DarwinContactActionUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinContact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Contact not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contacts/{contactId}/anomalies": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get Darwin contact anomalies",
        "operationId": "getDarwinContactAnomaliesById",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "Contact Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "all",
            "in": "query",
            "description": "True to get general and specific to contact anomalie",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DarwinAnomaly"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Contact not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/contacts/{contactId}/dbna": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get DBNA contact data",
        "operationId": "getDarwinDBNAContactById",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "Contact Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "DBNA contact not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/documents": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Search Darwin documents",
        "operationId": "searchDarwinDocuments",
        "parameters": [
          {
            "name": "documentType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinDocumentType"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 0,
              "type": "integer"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDarwinDocument"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Darwin"
        ],
        "summary": "Create Darwin documents for a request",
        "operationId": "createDarwinDocumentForRequest",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "document",
                  "file"
                ],
                "properties": {
                  "document": {
                    "type": "object",
                    "required": [
                      "requestId",
                      "documentType"
                    ],
                    "properties": {
                      "requestId": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "documentType": {
                        "$ref": "#/components/schemas/DarwinDocumentType"
                      },
                      "note": {
                        "type": "string"
                      }
                    }
                  },
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Document file. Only PDF and JPEG files are accepted."
                  }
                }
              },
              "encoding": {
                "document": {
                  "contentType": "application/json"
                },
                "file": {
                  "contentType": "application/pdf, image/jpeg"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinDocument"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Darwin request not found"
          },
          "413": {
            "description": "Request entity too large",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/documents/count": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Count Darwin documents search results",
        "operationId": "countDarwinDocuments",
        "parameters": [
          {
            "name": "documentType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinDocumentType"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/documents/{documentId}": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get a Darwin document by id",
        "operationId": "getDarwinDocumentById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "description": "Document Id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc-123"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinDocument"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Document not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Darwin"
        ],
        "summary": "Delete a Darwin document by id",
        "operationId": "deleteDarwinDocumentById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "description": "Document Id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc-123"
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Document not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/documents/{documentId}/download": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Download Darwin document binary content by id",
        "operationId": "downloadDarwinDocumentById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "description": "Document Id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc-123"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Document not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/domains": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Search Darwin domains",
        "operationId": "searchDarwinDomains",
        "parameters": [
          {
            "name": "contactId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "dbnaId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "domain",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 0,
              "type": "integer"
            }
          },
          {
            "name": "registrarContactId",
            "in": "query",
            "schema": {
              "description": "Find by contactId assigned by the Registrar",
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDarwinDomain"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/domains/count": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Count Darwin domains search results",
        "operationId": "countDarwinDomains",
        "parameters": [
          {
            "name": "contactId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "dbnaId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "domain",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "registrarContactId",
            "in": "query",
            "schema": {
              "description": "Find by contactId assigned by the Registrar",
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/domains/{id}": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get Darwin domain by id",
        "operationId": "getDarwinDomainById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Domain Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinDomain"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Domain not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/domains/{id}/dbna": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get DBNA domain data",
        "operationId": "getDBNADomainByDarwinDomainId",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Darwin domain Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Domain"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Domain not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/events": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Search Darwin events",
        "operationId": "findDarwinEvents",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 0,
              "type": "integer"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 20,
              "type": "integer"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDarwinEvent"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/events/count": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Count Darwin events search results",
        "operationId": "countDarwinEvents",
        "parameters": [
          {
            "name": "requestId",
            "in": "query",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Search Darwin requests",
        "operationId": "searchDarwinRequests",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 0,
              "type": "integer"
            }
          },
          {
            "name": "referenceContactOrg",
            "in": "query",
            "schema": {
              "description": "Find by contact org (startsWith)",
              "type": "string"
            }
          },
          {
            "name": "referenceContactRegcode",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "registrarAssignation",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinUserAssignation"
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 20,
              "type": "integer"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinRequestStatus"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Add more information to results. Valid values (comma separated) are: referenceContact and expirationDays",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDarwinRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/count": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Count Darwin requests search results",
        "operationId": "countDarwinRequests",
        "parameters": [
          {
            "name": "referenceContactOrg",
            "in": "query",
            "schema": {
              "description": "Find by contact org (startsWith)",
              "type": "string"
            }
          },
          {
            "name": "referenceContactRegcode",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "registrarAssignation",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinUserAssignation"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinRequestStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/expiring": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Search/List Darwin expiring requests",
        "operationId": "searchDarwinExpiringRequests",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "description": "Days to expiration",
            "required": true,
            "schema": {
              "format": "int32",
              "default": "7",
              "type": "integer"
            },
            "example": 10
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 0,
              "type": "integer"
            }
          },
          {
            "name": "referenceContactOrg",
            "in": "query",
            "schema": {
              "description": "Find by contact org (startsWith)",
              "type": "string"
            }
          },
          {
            "name": "referenceContactRegcode",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "registrarAssignation",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinUserAssignation"
            }
          },
          {
            "name": "size",
            "in": "query",
            "schema": {
              "format": "int32",
              "default": 20,
              "type": "integer"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Add more information to results. Valid values (comma separated) are: referenceContact and expirationDays",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDarwinRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/expiring/count": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Count Darwin expiring requests",
        "operationId": "countDarwinExpiringRequests",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "description": "Days to expiration",
            "required": true,
            "schema": {
              "format": "int32",
              "default": "7",
              "type": "integer"
            },
            "example": 10
          },
          {
            "name": "referenceContactOrg",
            "in": "query",
            "schema": {
              "description": "Find by contact org (startsWith)",
              "type": "string"
            }
          },
          {
            "name": "referenceContactRegcode",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "registrarAssignation",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/DarwinUserAssignation"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ritorna numero richieste in scadenza",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get Darwin request by id",
        "operationId": "getDarwinRequestById",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "view",
            "in": "query",
            "description": "Add more information to result. Valid values (comma separated) are: referenceContact and expirationDays",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Request not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}/anomalies": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get Darwin request anomalies",
        "operationId": "getDarwinAnomaliesByRequestId",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DarwinAnomaly"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Request not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}/assignToMe": {
      "post": {
        "tags": [
          "Darwin"
        ],
        "summary": "Assign a Darwin request to the authenticated user",
        "operationId": "assignDarwinRequestToMe",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "204": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Request already assigned or request status not compatibile"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}/assignToUser": {
      "post": {
        "tags": [
          "Darwin"
        ],
        "summary": "Assign the Darwin request to a user",
        "operationId": "assignDarwinRequestToUser",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DarwinUserAssignationRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Request status not compatible or request already assigned to the same user"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}/assignationRelease": {
      "post": {
        "tags": [
          "Darwin"
        ],
        "summary": "Release Darwin request assignation",
        "operationId": "releaseAssignationForDarwinRequest",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "204": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Request not assigned or request status not compatible"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}/expirationDays": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get the number of days to expiration for a Darwin request",
        "operationId": "getDarwinExpirationDaysByRequestId",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Request not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}/process": {
      "post": {
        "tags": [
          "Darwin"
        ],
        "summary": "Process Darwin request",
        "operationId": "processDarwinRequestByRequestId",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseLegacy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Request not found"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    },
    "/v1/darwin/requests/{requestId}/referenceContact": {
      "get": {
        "tags": [
          "Darwin"
        ],
        "summary": "Get chosen contact data for a Darwin request",
        "operationId": "getDarwinReferenceContactByRequestId",
        "parameters": [
          {
            "name": "requestId",
            "in": "path",
            "description": "Request Id",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DarwinReferenceContact"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Invalid Request"
          }
        },
        "security": [
          {
            "registrar_authentication": [],
            "SecurityScheme": [
              "admin",
              "domain",
              "darwin"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "registrar_authentication": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://auth.pubtest.nic.it/auth/realms/registrar/protocol/openid-connect/auth",
            "tokenUrl": "https://auth.pubtest.nic.it/auth/realms/registrar/protocol/openid-connect/token",
            "scopes": {
              "security": "security scope",
              "domain": "domain scope",
              "darwin": "darwin scope",
              "billing": "billing scope"
            }
          }
        }
      }
    },
    "schemas": {
      "Registrar": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string"
          },
          "voiceCode": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "deleted",
              "suspended"
            ]
          },
          "statusDate": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Customer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "org": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "PRIVATE",
              "PUBLIC"
            ]
          },
          "rea": {
            "type": "string"
          },
          "splitPayment": {
            "type": "boolean"
          },
          "voice": {
            "type": "string"
          },
          "fax": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "deleted",
              "suspended"
            ]
          },
          "statusDate": {
            "type": "string",
            "format": "date-time"
          },
          "accreditationDate": {
            "type": "string",
            "format": "date-time"
          },
          "dnsSecAccreditationDate": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          },
          "vatNumber": {
            "type": "string"
          },
          "fiscalCode": {
            "type": "string"
          },
          "eInvoicingCode": {
            "type": "string"
          },
          "eInvoicingPec": {
            "type": "string",
            "format": "email"
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          }
        }
      },
      "CustomerEInvoicingRequest": {
        "type": "object",
        "properties": {
          "eInvoicingCode": {
            "description": "7 characters code for italian private customers",
            "type": "string"
          },
          "eInvoicingPec": {
            "type": "string",
            "format": "email"
          }
        }
      },
      "Contract": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "protNum": {
            "type": "string"
          },
          "protDate": {
            "type": "string",
            "format": "date"
          },
          "admin": {
            "type": "string"
          },
          "adminCF": {
            "type": "string"
          },
          "pec": {
            "type": "string",
            "format": "email"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "coc": {
            "type": "boolean"
          },
          "logo": {
            "type": "boolean"
          },
          "web": {
            "type": "string"
          },
          "expireDate": {
            "type": "string",
            "format": "date"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Address": {
        "required": [
          "city",
          "country",
          "postalcode",
          "state",
          "street"
        ],
        "type": "object",
        "properties": {
          "street": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string"
          },
          "city": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string"
          },
          "state": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string"
          },
          "postalcode": {
            "maxLength": 16,
            "minLength": 0,
            "type": "string"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          }
        }
      },
      "RegistrarPublicInfoRequest": {
        "required": [
          "address",
          "eduLogo",
          "email",
          "govLogo",
          "voice",
          "web"
        ],
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "voice": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string"
          },
          "fax": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string"
          },
          "email": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "format": "email"
          },
          "web": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string"
          },
          "eduLogo": {
            "type": "boolean"
          },
          "govLogo": {
            "type": "boolean"
          }
        }
      },
      "RegistrarPublicInfo": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "voice": {
            "type": "string"
          },
          "fax": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "web": {
            "type": "string"
          },
          "eduLogo": {
            "type": "boolean"
          },
          "govLogo": {
            "type": "boolean"
          }
        }
      },
      "HeadQuarter": {
        "required": [
          "address",
          "voice"
        ],
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "voice": {
            "type": "string"
          },
          "fax": {
            "type": "string"
          }
        }
      },
      "EmailNotification": {
        "required": [
          "email",
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "billing",
              "operations"
            ]
          },
          "email": {
            "type": "string",
            "format": "email"
          }
        }
      },
      "EmailsRegistrar": {
        "required": [
          "emails",
          "language"
        ],
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ]
          },
          "emails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailNotification"
            }
          }
        }
      },
      "RegistrarContactPhone": {
        "required": [
          "number",
          "type"
        ],
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "example": "+39.05012345678"
          },
          "type": {
            "type": "string",
            "enum": [
              "phone",
              "fax",
              "mobile"
            ]
          }
        }
      },
      "RegistrarContactRequest": {
        "required": [
          "email",
          "mailinglistReg2reg",
          "name",
          "phones",
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "admin",
              "billing",
              "tech"
            ]
          },
          "name": {
            "type": "string"
          },
          "org": {
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "phones": {
            "maxItems": 4,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RegistrarContactPhone"
            }
          },
          "email": {
            "type": "string"
          },
          "mailinglistReg2reg": {
            "type": "boolean"
          }
        }
      },
      "RegistrarContact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "type": {
            "type": "string",
            "enum": [
              "admin",
              "billing",
              "tech"
            ]
          },
          "name": {
            "type": "string",
            "example": "Giulio Cesare"
          },
          "org": {
            "type": "string",
            "example": "Registro .it"
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "phones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RegistrarContactPhone"
            }
          },
          "email": {
            "type": "string",
            "example": "hostmaster@nic.it"
          },
          "mailinglistReg2reg": {
            "type": "boolean"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "GDPRTemplate": {
        "required": [
          "baseGiuridica",
          "categorie",
          "finalita",
          "modalita",
          "terminiCancellazione"
        ],
        "type": "object",
        "properties": {
          "categorie": {
            "type": "string"
          },
          "baseGiuridica": {
            "type": "string"
          },
          "finalita": {
            "type": "string"
          },
          "terminiCancellazione": {
            "type": "string"
          },
          "modalita": {
            "type": "string"
          }
        }
      },
      "GDPRRequest": {
        "required": [
          "language",
          "sicurezza"
        ],
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ]
          },
          "rpdNome": {
            "maxLength": 64,
            "minLength": 2,
            "type": "string"
          },
          "rpdEmail": {
            "maxLength": 128,
            "minLength": 5,
            "type": "string",
            "format": "email"
          },
          "categorieAltro": {
            "maxLength": 2147483647,
            "minLength": 2,
            "type": "string"
          },
          "sicurezza": {
            "type": "string"
          },
          "modalitaAltro": {
            "maxLength": 2147483647,
            "minLength": 2,
            "type": "string"
          }
        }
      },
      "GDPRData": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ]
          },
          "rpdNome": {
            "type": "string"
          },
          "rpdEmail": {
            "type": "string",
            "format": "email"
          },
          "categorie": {
            "type": "string"
          },
          "categorieAltro": {
            "type": "string"
          },
          "baseGiuridica": {
            "type": "string"
          },
          "finalita": {
            "type": "string"
          },
          "sicurezza": {
            "type": "string"
          },
          "terminiCancellazione": {
            "type": "string"
          },
          "modalita": {
            "type": "string"
          },
          "modalitaAltro": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PageInfo": {
        "type": "object",
        "required": [
          "number",
          "size"
        ],
        "properties": {
          "number": {
            "type": "integer",
            "format": "int64"
          },
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "PagedRegistrarEvent": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RegistrarEvent"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "RegistrarEventReference": {
        "required": [
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        }
      },
      "RegistrarEvent": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "registrarStatusChangeToActive",
              "registrarStatusChangeToSuspended",
              "registrarStatusChangeToDeleted",
              "paymentSubmitted",
              "paymentApproved",
              "paymentRejected",
              "registrarPasswordChange",
              "creditStatusChangeToNormal",
              "creditStatusChangeToLow",
              "creditStatusChangeToOutOfFunds",
              "newInvoice",
              "registrarTransfer",
              "registrarRename",
              "penalty"
            ]
          },
          "description": {
            "type": "string"
          },
          "reference": {
            "$ref": "#/components/schemas/RegistrarEventReference"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Credit": {
        "type": "object",
        "properties": {
          "credit": {
            "type": "number"
          },
          "threshold": {
            "type": "number"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "enum": [
              "normalBalance",
              "lowCredit",
              "outOfFunds"
            ]
          }
        }
      },
      "CreditUntilDate": {
        "type": "object",
        "properties": {
          "credit": {
            "type": "number"
          }
        }
      },
      "CreditWarnThreshold": {
        "required": [
          "threshold"
        ],
        "type": "object",
        "properties": {
          "threshold": {
            "minimum": 0,
            "type": "number"
          }
        }
      },
      "BankPaymentCreate": {
        "required": [
          "amount",
          "bankPayment"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "example": 200
          },
          "bankPayment": {
            "$ref": "#/components/schemas/BankPaymentInfo"
          }
        }
      },
      "BankPaymentInfo": {
        "required": [
          "applicant",
          "applicantRole",
          "bankName",
          "branchName",
          "european",
          "paymentDate",
          "transactionId",
          "valueDate"
        ],
        "type": "object",
        "properties": {
          "european": {
            "type": "boolean",
            "example": true
          },
          "applicant": {
            "type": "string",
            "example": "Giulio Cesare"
          },
          "applicantRole": {
            "type": "string",
            "example": "admin",
            "enum": [
              "admin",
              "deputy"
            ]
          },
          "bankName": {
            "type": "string",
            "example": "Una Banca"
          },
          "branchName": {
            "type": "string",
            "example": "Online"
          },
          "paymentDate": {
            "type": "string",
            "format": "date",
            "example": "2024-05-06"
          },
          "valueDate": {
            "type": "string",
            "format": "date",
            "example": "2024-05-07"
          },
          "transactionId": {
            "type": "string",
            "example": "123456"
          }
        }
      },
      "CreditCardPaymentInfo": {
        "required": [
          "service",
          "transactionId"
        ],
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string"
          },
          "service": {
            "type": "string",
            "enum": [
              "bnlPositivity",
              "phey"
            ]
          }
        },
        "description": "Credit card payment information, available only if payment type is 'creditCard'"
      },
      "ContractTransferPaymentInfo": {
        "type": "object",
        "properties": {
          "sourceRegistrar": {
            "type": "string"
          },
          "sourceCustomerOrg": {
            "type": "string"
          }
        },
        "description": "Contract transfer payment information, available only if payment type is 'contractTransfer'"
      },
      "Payment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Payment id",
            "format": "int64"
          },
          "amount": {
            "type": "number",
            "description": "Payment total amount"
          },
          "debitedAmount": {
            "type": "number",
            "description": "Debited amount, only if 'approved'"
          },
          "previousResidual": {
            "type": "number",
            "description": "Previous payment residual, only if 'approved'"
          },
          "finalResidual": {
            "type": "number",
            "description": "Final payment residual, available only if the payment is exhausted"
          },
          "type": {
            "type": "string",
            "enum": [
              "bank",
              "creditCard",
              "registry",
              "contractTransfer"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "submitted",
              "approved",
              "suspended",
              "rejected"
            ]
          },
          "statusDate": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "bankPayment": {
            "$ref": "#/components/schemas/BankPaymentInfo"
          },
          "creditCardTransaction": {
            "$ref": "#/components/schemas/CreditCardPaymentInfo"
          },
          "contractTransferPayment": {
            "$ref": "#/components/schemas/ContractTransferPaymentInfo"
          }
        }
      },
      "PaymentReport": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number"
          },
          "previousResidual": {
            "type": "number"
          },
          "finalResidual": {
            "type": "number"
          },
          "stampDuty": {
            "type": "number"
          },
          "domainsOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentReportDomainOperation"
            }
          },
          "bulkTransfersOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentReportBulkTransferOperation"
            }
          },
          "penaltiesOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentReportPenaltyOperation"
            }
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PaymentReportBulkTransferOperation": {
        "type": "object",
        "properties": {
          "bulkTransferId": {
            "type": "integer",
            "format": "int64"
          },
          "amount": {
            "type": "number"
          }
        }
      },
      "PaymentReportDomainOperation": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "operationCost": {
            "type": "number"
          },
          "amount": {
            "type": "number"
          }
        }
      },
      "PaymentReportPenaltyOperation": {
        "type": "object",
        "properties": {
          "penaltyId": {
            "type": "integer",
            "format": "int64"
          },
          "amount": {
            "type": "number"
          }
        }
      },
      "Invoice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "fiscalYear": {
            "type": "integer",
            "format": "int32"
          },
          "invoiceNumber": {
            "type": "integer",
            "format": "int64"
          },
          "totalAmount": {
            "type": "number"
          },
          "taxAmount": {
            "type": "number"
          },
          "taxRate": {
            "type": "string"
          },
          "invoiceDate": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "PagedPayment": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Payment"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "PagedInvoice": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Invoice"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "CreditCardTransactionRequest": {
        "required": [
          "amount",
          "language",
          "redirectFailureUrl",
          "redirectSuccessUrl"
        ],
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ]
          },
          "amount": {
            "minimum": 0,
            "exclusiveMinimum": true,
            "type": "number"
          },
          "redirectSuccessUrl": {
            "type": "string"
          },
          "redirectFailureUrl": {
            "type": "string"
          }
        }
      },
      "CreditCardInfo": {
        "type": "object",
        "properties": {
          "brand": {
            "type": "string"
          },
          "number": {
            "type": "string"
          },
          "expire": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CreditCardTransaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "gatewayId": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "paymentId": {
            "type": "integer",
            "format": "int64"
          },
          "response": {
            "$ref": "#/components/schemas/CreditCardTransactionResponse"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CreditCardTransactionResponse": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "transactionDate": {
            "type": "string",
            "format": "date-time"
          },
          "creditCard": {
            "$ref": "#/components/schemas/CreditCardInfo"
          }
        }
      },
      "UserCreate": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "username": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          },
          "lastPasswordChange": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "IpAddressCreate": {
        "required": [
          "ipAddress",
          "service",
          "userId"
        ],
        "type": "object",
        "properties": {
          "ipAddress": {
            "type": "string",
            "format": "ipv4"
          },
          "service": {
            "type": "string",
            "enum": [
              "epp-server",
              "das"
            ]
          },
          "userId": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "IpAddressUserRegistrar": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "userId": {
            "type": "integer",
            "format": "int64"
          },
          "ipAddress": {
            "type": "string"
          },
          "ipVersion": {
            "type": "string",
            "enum": [
              "IPv4",
              "IPv6"
            ]
          },
          "created": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PagedResourcesRegistrarUser": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/User"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "PasswordSettings": {
        "type": "object",
        "properties": {
          "minLength": {
            "maximum": 40,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "maxLength": {
            "maximum": 40,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "upperCaseCharacters": {
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "lowerCaseCharacters": {
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "digits": {
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "specialCharacters": {
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "whiteSpaces": {
            "type": "boolean"
          },
          "notEqualsLastPassword": {
            "type": "boolean"
          }
        }
      },
      "ClientRequest": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "format": "int64"
          },
          "expire": {
            "type": "string",
            "format": "date"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "minItems": 0,
            "uniqueItems": true
          }
        },
        "required": [
          "userId",
          "expire",
          "roles"
        ]
      },
      "Client": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "userId": {
            "type": "integer",
            "format": "int64"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "pending",
              "deleting"
            ]
          },
          "expire": {
            "type": "string",
            "format": "date-time"
          },
          "keystoreGenerated": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ClientKeystoreGenerationRequest": {
        "type": "object",
        "properties": {
          "storePassword": {
            "type": "string",
            "maxLength": 32,
            "minLength": 8
          }
        },
        "required": [
          "storePassword"
        ]
      },
      "DarwinContactAction": {
        "enum": [
          "todo",
          "hold",
          "delete"
        ],
        "type": "string"
      },
      "DarwinAnomaly": {
        "required": [
          "field",
          "codes"
        ],
        "type": "object",
        "properties": {
          "field": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          },
          "contacts": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "codes": {
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "integer"
            }
          }
        }
      },
      "DarwinUserAssignation": {
        "enum": [
          "all",
          "assigned",
          "unassigned",
          "assignedToMe"
        ],
        "type": "string"
      },
      "DarwinContact": {
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "Darwin contact id",
            "type": "integer"
          },
          "dbnaId": {
            "format": "int64",
            "description": "DBNA contact id",
            "type": "integer"
          },
          "requestId": {
            "format": "int64",
            "type": "integer"
          },
          "registrarContactId": {
            "description": "Contact id assigned by the Registrar",
            "type": "string"
          },
          "action": {
            "type": "string",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinContactAction"
              }
            ]
          },
          "status": {
            "type": "string",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinContactStatus"
              }
            ]
          },
          "reference": {
            "description": "True if the contact is the reference contact",
            "type": "boolean"
          }
        }
      },
      "DarwinContactActionUpdate": {
        "type": "object",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/DarwinContactAction"
          }
        }
      },
      "DarwinContactStatus": {
        "enum": [
          "submitted",
          "rejected",
          "locked",
          "processed"
        ],
        "type": "string"
      },
      "DarwinContactUpdate": {
        "required": [
          "id",
          "requestId",
          "contactData",
          "created"
        ],
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "type": "integer",
            "readOnly": true
          },
          "requestId": {
            "format": "int64",
            "type": "integer"
          },
          "message": {
            "description": "Optional message",
            "type": "string"
          },
          "contactData": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinContactUpdateData"
              }
            ]
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-10T12:15:50+01:00",
            "readOnly": true
          }
        }
      },
      "DarwinContactUpdateData": {
        "required": [
          "name",
          "org",
          "streets",
          "city",
          "state",
          "postalCode",
          "voice",
          "email",
          "registrant"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "org": {
            "type": "string"
          },
          "streets": {
            "maxItems": 3,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "description": "Non può essere modificato dal Registrar",
            "type": "string"
          },
          "voice": {
            "type": "string"
          },
          "fax": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "consentForPublish": {
            "type": "boolean"
          },
          "registrant": {
            "$ref": "#/components/schemas/DarwinContactUpdateRegistrantData"
          }
        }
      },
      "DarwinContactUpdateRegistrantData": {
        "required": [
          "regcode"
        ],
        "type": "object",
        "properties": {
          "regcode": {
            "type": "string"
          },
          "nationality": {
            "type": "string",
            "readOnly": true
          },
          "entityType": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7,
            "readOnly": true
          }
        }
      },
      "DarwinDocument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "requestId": {
            "format": "int64",
            "type": "integer"
          },
          "fileName": {
            "type": "string"
          },
          "fileSize": {
            "format": "int64",
            "type": "integer"
          },
          "documentType": {
            "type": "string",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinDocumentType"
              }
            ]
          },
          "fileType": {
            "type": "string",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinFileType"
              }
            ]
          },
          "note": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-10T12:15:50+01:00"
          }
        }
      },
      "DarwinDocumentType": {
        "description": "Tipologie di documento",
        "enum": [
          "IC",
          "PASS",
          "FC",
          "CHAMBER",
          "DEED",
          "CERT",
          "OTHER"
        ],
        "type": "string"
      },
      "DarwinDomain": {
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "Darwin domain id",
            "type": "integer"
          },
          "dbnaId": {
            "format": "int64",
            "description": "DBNA domain id",
            "type": "integer"
          },
          "domain": {
            "type": "string"
          },
          "registrarContactId": {
            "type": "string"
          },
          "requestId": {
            "format": "int64",
            "type": "integer"
          },
          "contactId": {
            "format": "int64",
            "description": "Darwin contactId for the domain registrant",
            "type": "integer"
          },
          "status": {
            "type": "string",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinDomainStatus"
              }
            ]
          }
        }
      },
      "DarwinDomainStatus": {
        "description": "Stati possibili dei domini",
        "enum": [
          "locked",
          "incompatible",
          "rejected",
          "processed"
        ],
        "type": "string"
      },
      "DarwinEventType": {
        "enum": [
          "submitted",
          "rejected",
          "toPending",
          "registrarUpdated",
          "registrarUpdateRejected",
          "registrarUpdateApproved",
          "toProcessing",
          "expired",
          "completed",
          "expiredCompleted",
          "updatedRequiredDocuments",
          "cancelled",
          "cancelledCompleted",
          "registryUpdated",
          "registrarUserAssignation",
          "registrarUserRelease",
          "registryUserAssignation",
          "registryUserRelease"
        ],
        "type": "string"
      },
      "DarwinFileType": {
        "enum": [
          "pdf",
          "jpg"
        ],
        "type": "string"
      },
      "PagedDarwinContact": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DarwinContact"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "PagedDarwinDocument": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DarwinDocument"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "PagedDarwinDomain": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DarwinDomain"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "PagedDarwinEvent": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DarwinEvent"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "PagedDarwinRequest": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DarwinRequest"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "DarwinReferenceContact": {
        "description": "Chosen contact data",
        "required": [
          "registrarContactId"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "format": "int64",
            "description": "Darwin contact id",
            "type": "integer"
          },
          "requestId": {
            "format": "int64",
            "type": "integer",
            "example": 1
          },
          "registrarContactId": {
            "description": "DBNA contact id assigned by the Registrar",
            "type": "string",
            "example": "CCTL2"
          },
          "dbnaId": {
            "format": "int64",
            "description": "DBNA numeric contact id",
            "type": "integer",
            "example": 1020304
          },
          "org": {
            "type": "string",
            "example": "Registro .it"
          },
          "regcode": {
            "type": "string",
            "example": "001122334455"
          }
        }
      },
      "DarwinEvent": {
        "type": "object",
        "properties": {
          "requestId": {
            "format": "int64",
            "type": "integer"
          },
          "type": {
            "$ref": "#/components/schemas/DarwinEventType"
          },
          "user": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-10T12:15:50+01:00"
          }
        }
      },
      "DarwinRequest": {
        "required": [
          "id",
          "registrarId",
          "status",
          "statusDate"
        ],
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "type": "integer"
          },
          "registrarId": {
            "format": "int64",
            "type": "integer"
          },
          "status": {
            "type": "string",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinRequestStatus"
              }
            ]
          },
          "statusDate": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-10T12:15:50+01:00"
          },
          "note": {
            "type": "string"
          },
          "referenceContact": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinReferenceContact"
              }
            ]
          },
          "requiredDocuments": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinRequiredDocument"
              }
            ]
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-10T12:15:50+01:00"
          },
          "registrarUser": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/DarwinUser"
              }
            ]
          },
          "expirationDays": {
            "format": "int64",
            "type": "integer"
          }
        }
      },
      "DarwinRequestStatus": {
        "enum": [
          "submitted",
          "pending",
          "rejected",
          "registrarUpdated",
          "processing",
          "processingExpired",
          "expired",
          "completed",
          "processingCancelled",
          "cancelled"
        ],
        "type": "string"
      },
      "DarwinRequiredDocument": {
        "type": "object",
        "properties": {
          "documents": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DarwinDocumentType"
            }
          },
          "other": {
            "type": "string"
          }
        }
      },
      "DarwinUser": {
        "required": [
          "username"
        ],
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "type": "integer"
          },
          "username": {
            "description": "Username",
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "DarwinUserAssignationRequest": {
        "required": [
          "userId"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "format": "int64",
            "type": "integer"
          }
        }
      },
      "Contact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "example": 1234
          },
          "name": {
            "type": "string",
            "example": "Giulio Cesare"
          },
          "org": {
            "type": "string",
            "example": "Registro .it"
          },
          "contactId": {
            "type": "string",
            "example": "GC0001"
          },
          "consentForPublish": {
            "type": "boolean",
            "example": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "example": "2023-05-06T13:14:10+02:00"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time",
            "example": "2024-04-16T11:24:20+02:00"
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "test@nic.it"
          },
          "voice": {
            "type": "string",
            "example": "+39.0503151111"
          },
          "fax": {
            "type": "string"
          },
          "streets": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Via G. Moruzzi 1"
            }
          },
          "city": {
            "type": "string",
            "example": "Pisa"
          },
          "postalCode": {
            "type": "string",
            "example": "56124"
          },
          "state": {
            "type": "string",
            "example": "PI"
          },
          "country": {
            "type": "string",
            "example": "it"
          },
          "registrant": {
            "$ref": "#/components/schemas/RegistrantData"
          },
          "status": {
            "type": "string",
            "example": "ok / linked"
          },
          "linked": {
            "type": "boolean",
            "example": true
          }
        }
      },
      "RegistrantData": {
        "type": "object",
        "properties": {
          "regcode": {
            "type": "string",
            "example": "001122334455"
          },
          "schoolCode": {
            "type": "string"
          },
          "nationality": {
            "type": "string",
            "example": "it"
          },
          "entityType": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 7,
            "example": 2
          },
          "gov": {
            "$ref": "#/components/schemas/GovInfo"
          }
        }
      },
      "Domain": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "example": 1234
          },
          "domain": {
            "type": "string",
            "example": "nic.it"
          },
          "domainIDN": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "example": "ok / autoRenewPeriod"
          },
          "signed": {
            "type": "boolean",
            "example": true
          },
          "registrantId": {
            "type": "integer",
            "format": "int64",
            "example": 12345
          },
          "adminId": {
            "type": "integer",
            "format": "int64",
            "example": 123456
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "example": "2024-04-16T11:24:20+02:00"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time",
            "example": "2024-04-16T11:24:20+02:00"
          },
          "expire": {
            "type": "string",
            "format": "date-time",
            "example": "2025-04-16T23:59:59+02:00"
          },
          "registered": {
            "type": "boolean",
            "example": true
          },
          "registrant": {
            "$ref": "#/components/schemas/Contact"
          },
          "admin": {
            "$ref": "#/components/schemas/Contact"
          },
          "techs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contact"
            }
          },
          "hosts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Host"
            }
          },
          "newHosts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Host"
            }
          },
          "dsRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DSRecord"
            }
          },
          "newDsRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DSRecord"
            }
          }
        }
      },
      "PagedDomainEvent": {
        "$ref": "#/components/schemas/PagedDomainEvents"
      },
      "DomainEvent": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "epp",
              "registry"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "succeeded",
              "failed"
            ],
            "example": "succeeded"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "example": "2024-04-16T11:24:20+02:00"
          },
          "epp": {
            "$ref": "#/components/schemas/EPPCommand"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "EppDTO": {
        "$ref": "#/components/schemas/EPPCommand"
      },
      "EPPRequest": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "command": {
            "type": "string"
          },
          "clientTrId": {
            "type": "string"
          }
        }
      },
      "EPPResponse": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "codeName": {
            "type": "string"
          },
          "serverTrId": {
            "type": "string"
          },
          "reason": {
            "type": "integer",
            "format": "int32"
          },
          "reasonName": {
            "type": "string"
          },
          "reasonMessage": {
            "type": "string"
          }
        }
      },
      "DSRecord": {
        "type": "object",
        "properties": {
          "keytag": {
            "type": "integer",
            "format": "int32",
            "example": 12340
          },
          "algorithm": {
            "type": "integer",
            "format": "int32",
            "example": 10
          },
          "digestType": {
            "type": "integer",
            "format": "int32",
            "example": 2
          },
          "digest": {
            "type": "string",
            "example": "125ABCD123459287ABC"
          }
        }
      },
      "GovInfo": {
        "type": "object",
        "properties": {
          "ipaCode": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string"
          },
          "uoCode": {
            "maxLength": 16,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "Host": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "dns.nic.it"
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IpAddress"
            }
          }
        }
      },
      "IpAddress": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "example": "192.12.192.5"
          },
          "type": {
            "type": "string",
            "example": "v4",
            "enum": [
              "v4",
              "v6"
            ]
          }
        }
      },
      "IDNConversion": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "domainIDN": {
            "type": "string"
          }
        }
      },
      "PagedDomain": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Domain"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "PagedContact": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contact"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "BulkTransfer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "source": {
            "$ref": "#/components/schemas/BulkTransferRegistrar"
          },
          "destination": {
            "$ref": "#/components/schemas/BulkTransferRegistrar"
          },
          "status": {
            "type": "string",
            "enum": [
              "APPROVED",
              "CANCELLED",
              "COMPLETED",
              "DOC_OK",
              "DOC_WAITING",
              "EXPIRED",
              "EXPIRING",
              "REJECTED",
              "SUBMITTED",
              "VERIFIED"
            ]
          },
          "approvalDate": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastupdate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BulkTransferRegistrar": {
        "type": "object",
        "properties": {
          "applicant": {
            "type": "string"
          },
          "applicantCF": {
            "type": "string"
          },
          "admin": {
            "type": "string"
          },
          "registrar": {
            "type": "string"
          }
        }
      },
      "BulkTransferCreate": {
        "required": [
          "destination",
          "domains",
          "source"
        ],
        "type": "object",
        "properties": {
          "source": {
            "$ref": "#/components/schemas/BulkTransferCreateSourceRegistrar"
          },
          "destination": {
            "$ref": "#/components/schemas/BulkTransferCreateDestinationRegistrar"
          },
          "domains": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "BulkTransferCreateSourceRegistrar": {
        "type": "object",
        "required": [
          "applicant",
          "applicantCF"
        ],
        "properties": {
          "applicant": {
            "type": "string"
          },
          "applicantCF": {
            "type": "string"
          },
          "admin": {
            "type": "string"
          }
        }
      },
      "BulkTransferCreateDestinationRegistrar": {
        "type": "object",
        "required": [
          "registrar"
        ],
        "properties": {
          "registrar": {
            "type": "string"
          }
        }
      },
      "BulkTransferApprove": {
        "required": [
          "applicant",
          "applicantCF"
        ],
        "type": "object",
        "properties": {
          "applicant": {
            "type": "string"
          },
          "applicantCF": {
            "type": "string"
          },
          "admin": {
            "type": "string"
          }
        }
      },
      "PagedBulkTransfer": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkTransfer"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "BulkTransferEvent": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "submitted",
              "document_not_ok",
              "rejected",
              "approved",
              "cancelled",
              "completed",
              "expiring",
              "expired",
              "verified",
              "credit_refunded",
              "document_ok"
            ]
          },
          "description": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PagedBulkTransferEvent": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkTransferEvent"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "BulkTransferDomain": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "domain": {
            "type": "string"
          },
          "domainIDN": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "APPROVED",
              "EXPIRED",
              "FAILED",
              "REJECTED",
              "SUBMITTED",
              "TRANSFERRED",
              "VERIFIED"
            ]
          }
        }
      },
      "PagedBulkTransferDomain": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkTransferDomain"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      },
      "BulkTransferPdfDocumentData": {
        "type": "object",
        "properties": {
          "source": {
            "$ref": "#/components/schemas/BulkTransferPdfDocumentRegistrar"
          },
          "destination": {
            "$ref": "#/components/schemas/BulkTransferPdfDocumentRegistrar"
          }
        }
      },
      "BulkTransferPdfDocumentRegistrar": {
        "type": "object",
        "properties": {
          "applicant": {
            "type": "string"
          },
          "applicantCF": {
            "type": "string"
          },
          "admin": {
            "type": "string"
          },
          "registrar": {
            "type": "string"
          },
          "org": {
            "type": "string"
          },
          "regcode": {
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          }
        },
        "required": [
          "registrar",
          "org",
          "applicant",
          "applicantCF",
          "address"
        ]
      },
      "CountResponse": {
        "type": "object",
        "properties": {
          "count": {
            "format": "int64",
            "type": "integer"
          }
        }
      },
      "ErrorResponseLegacy": {
        "description": "Legacy error response with numeric code",
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "errors": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WrongValueLegacy"
            }
          }
        }
      },
      "WrongValueLegacy": {
        "description": "Legacy wrong value response with numeric code",
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "value": {
            "type": "object"
          },
          "message": {
            "type": "string"
          },
          "code": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "errors": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WrongValue"
            }
          }
        }
      },
      "WrongValue": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "value": {
            "type": "object"
          },
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        }
      },
      "EPPCommand": {
        "type": "object",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/EPPRequest"
          },
          "response": {
            "$ref": "#/components/schemas/EPPResponse"
          }
        }
      },
      "PagedDomainEvents": {
        "type": "object",
        "properties": {
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DomainEvent"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageInfo"
          }
        }
      }
    }
  }
}