{
  "openapi": "3.0.0",
  "info": {
    "version": "1.10.2",
    "title": "Xolphin API",
    "description": "As a Xolphin reseller, you can take advantage of the Xolphin REST API. By using the API, you can integrate the Xolphin order process within your custom software.\n\n## Response format\nAll success responses are formatted conforming the [HAL specification](http://stateless.co/hal_specification.html). HAL is a simple format that gives a consistent and easy way to hyperlink between resources in the API.\nLinks are only provided when relevant and applicable for the given resource.\n\n## Authentication\nAll API endpoints require the client to authenticate with a username and password using [HTTP Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication).\nMost client libraries provide a simple mechanism for supplying a username and password and will build the required authentication headers automatically ([cURL example](http://curl.haxx.se/docs/httpscripting.html#Basic_Authentication)).\n\n## Error handling\nErrors are returned in JSON format and will always contain a *message* attribute. If the error is triggered due to invalid user input, it will also contain an *errors* property describing the errors for each invalid property.\n\n## Rate limiting\nEach account is allowed to perform API calls with a maximum of 60 API calls per minute. When the client exceeds the rate limit, the client is blocked for one minute and a \"429 Too Many Requests\" response will be returned during that period.\nResponse headers \"X-RateLimit-Limit\" and \"X-RateLimit-Remaining\" are provided to be able to perform automated client throttling.\n",
    "contact": {
      "name": "Xolphin",
      "url": "https://www.xolphin.nl",
      "email": "info@xolphin.nl"
    }
  },
  "tags": [
    {
      "name": "request",
      "description": "Request operations"
    },
    {
      "name": "certificate",
      "description": "Certificate operations"
    },
    {
      "name": "support",
      "description": "Supporting operations"
    },
    {
      "name": "invoice",
      "description": "Invoice operations"
    }
  ],
  "paths": {
    "/requests": {
      "get": {
        "tags": [
          "request"
        ],
        "summary": "All requests",
        "description": "Retrieve a list of the most recent certificate requests.\nThe \"validations\" property only contains the validation checks associated with the requested product type.\n",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number (default: 1). By default each page contains 20 results.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The number of results per page (1 - 100).",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of results to be skipped.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 10
                    },
                    "total": {
                      "type": "integer",
                      "example": 198
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=10"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "requests": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RequestList"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 10
                    },
                    "total": {
                      "type": "integer",
                      "example": 198
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/requests?page=10"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "requests": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RequestList"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Order certificate",
        "description": "Order a new certificate.",
        "responses": {
          "201": {
            "description": "Request is successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "product": {
                    "description": "The unique identifier (ID) of the product.",
                    "type": "integer"
                  },
                  "years": {
                    "description": "The number of years the certificate should be valid.",
                    "type": "integer"
                  },
                  "csr": {
                    "description": "The CSR (Certificate Signing Request). Required for all certificate types, except digital signatures.",
                    "type": "string"
                  },
                  "dcvType": {
                    "description": "The method used for Domain Control Validation, EMAIL, FILE, DNS or MIXED. Required for all certificate types, except digital signatures.",
                    "type": "string",
                    "enum": [
                      "EMAIL",
                      "FILE",
                      "DNS",
                      "MIXED"
                    ]
                  },
                  "subjectAlternativeNames": {
                    "description": "Comma-separated list of Subject Alternative Names (SAN), only applicable to multi-domain certificates.\nIf not provided, these will be taken from the CSR.\n",
                    "type": "string"
                  },
                  "certenroll_email": {
                    "description": "Code signing certificate email address of the person or department for who this certificate is for.",
                    "type": "string"
                  },
                  "dcv": {
                    "description": "The email address of the domain validation approver or the JSON representation of Domain Control Validation (DCV) preferences per domain, only applicable to multi-domain certificates.\nIf not provided, the defaults will be taken from the request dcvType and approverEmail (for EMAIL validation).\n",
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/dcv_array"
                      },
                      {
                        "$ref": "#/components/schemas/dcv_string"
                      }
                    ]
                  },
                  "company": {
                    "description": "The company name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "department": {
                    "description": "The department name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "address": {
                    "description": "The address of the building, house number and street name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "zipcode": {
                    "description": "The zip code / postal code (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "city": {
                    "description": "The city or town in which the company is incorporated or registered (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "province": {
                    "description": "The state / province is also required if not NL or BE (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "country": {
                    "description": "The country name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "approverFirstName": {
                    "description": "The first name of the approver (This field is deprecated, please use approverRepresentativeFirstName).",
                    "type": "string"
                  },
                  "approverLastName": {
                    "description": "The last name of the approver (This field is deprecated, please use approverRepresentativeLastName).",
                    "type": "string"
                  },
                  "approverEmail": {
                    "description": "The email address of the domain validation approver (This field is deprecated, please use dcv).",
                    "type": "string"
                  },
                  "approverPhone": {
                    "description": "The phone number of the approver (This field is deprecated, please use approverRepresentativePhone).",
                    "type": "string"
                  },
                  "approverRepresentativeFirstName": {
                    "description": "The first name of the applicant who represents the business.",
                    "type": "string"
                  },
                  "approverRepresentativeLastName": {
                    "description": "The last name of the applicant who represents the business.",
                    "type": "string"
                  },
                  "approverRepresentativeEmail": {
                    "description": "E-mail address of applicant who represents the business, used for critical customer communications. Such as for validation for OV & EV Certificates.",
                    "type": "string"
                  },
                  "approverRepresentativePhone": {
                    "description": "The phone number of the applicant representative, mainly used for perform the Organizational callbacks.",
                    "type": "string"
                  },
                  "approverRepresentativePosition": {
                    "description": "The job title of the applicant who represents the business.",
                    "type": "string"
                  },
                  "kvk": {
                    "description": "The chamber of commerce number of the company.",
                    "type": "string"
                  },
                  "reference": {
                    "description": "The reference.",
                    "type": "string"
                  },
                  "referenceOrderNr": {
                    "description": "The Encryption Everywhere order number for upgrading the certificate.",
                    "type": "string"
                  },
                  "sa_email": {
                    "description": "The email the Subscriber Agreement should be sent to.",
                    "type": "string"
                  },
                  "language": {
                    "description": "The language in which the Subscriber Agreement should be sent, if not given, it uses the language of the request, or it defaults to nl.",
                    "type": "string",
                    "enum": [
                      "nl",
                      "en",
                      "de",
                      "fr"
                    ]
                  },
                  "uniqueValueDcv": {
                    "description": "An alphanumeric value of max 20 characters used for DCV validation, if not given a random string will be generated.",
                    "type": "string"
                  },
                  "disableFreeSan": {
                    "description": "Whether to disable the addition of the free www or non-www domain on Single Domain certificates. Default set is false.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "product",
                  "years",
                  "approverEmail",
                  "csr",
                  "dcvType"
                ]
              }
            }
          }
        }
      }
    },
    "/requests/ee": {
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Order Encryption Everywhere certificate",
        "description": "Order a new Encryption Everywhere certificate. This is only available for select customers.",
        "responses": {
          "201": {
            "description": "Request is successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EncryptionEverywhereCertificate"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/EncryptionEverywhereCertificate"
                }
              }
            }
          },
          "202": {
            "description": "Request is successfully validated by Symantec"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "csr": {
                    "description": "The CSR (Certificate Signing Request).",
                    "type": "string"
                  },
                  "dcvType": {
                    "description": "The method used for Domain Control Validation, FILE or DNS.",
                    "type": "string",
                    "enum": [
                      "FILE",
                      "DNS"
                    ]
                  },
                  "subjectAlternativeNames": {
                    "description": "Comma-separated list of Subject Alternative Names (SAN), only applicable to multi-domain certificates.\nIf not provided, these will be taken from the CSR.\n",
                    "type": "string"
                  },
                  "approverFirstName": {
                    "description": "The first name of the approver (This field is deprecated, please use approverRepresentativeFirstName).",
                    "type": "string"
                  },
                  "approverLastName": {
                    "description": "The last name of the approver (This field is deprecated, please use approverRepresentativeLastName).",
                    "type": "string"
                  },
                  "approverEmail": {
                    "description": "The email address of the approver. (This field is deprecated, please use approverRepresentativeEmail)",
                    "type": "string"
                  },
                  "approverPhone": {
                    "description": "The phone number of the approver. (This field is deprecated, please use approverRepresentativePhone)",
                    "type": "string"
                  },
                  "approverRepresentativeFirstName": {
                    "description": "The first name of the applicant representative.",
                    "type": "string"
                  },
                  "approverRepresentativeLastName": {
                    "description": "The last name of the applicant representative.",
                    "type": "string"
                  },
                  "approverRepresentativeEmail": {
                    "description": "The email address of the applicant representative.",
                    "type": "string"
                  },
                  "approverRepresentativePhone": {
                    "description": "The phone number of the applicant representative.",
                    "type": "string"
                  },
                  "validate": {
                    "description": "If this value is sent as true, the order parameters will be validated at Symantec. (No longer available in the Digicert environment)",
                    "type": "boolean"
                  },
                  "platform": {
                    "description": "Can be filled with 'digicert' to use the Digicert environment for Encryption Everywhere. If not filled, it will default to Symantec until dec 31st 2019",
                    "type": "string"
                  }
                },
                "required": [
                  "csr",
                  "dcvType",
                  "approverRepresentativeFirstName",
                  "approverRepresentativeLastName",
                  "approverRepresentativePhone"
                ]
              }
            }
          }
        }
      }
    },
    "/requests/{id}": {
      "get": {
        "tags": [
          "request"
        ],
        "summary": "Single request",
        "description": "Retrieve a single certificate request. Possible values for validationType are EMAIL, FILE or DNS.\nThe \"validations\" property only contains the validation checks associated with the requested product type.\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          },
          "410": {
            "description": "This request is archived or issued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestIsArchived"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestIsArchived"
                }
              }
            }
          }
        }
      }
    },
    "/requests/{id}/upload-document": {
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Upload new request document",
        "description": "Upload a new PDF request document.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The document is successfully uploaded."
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The document is successfully uploaded."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "document": {
                    "description": "The PDF file.",
                    "type": "string",
                    "format": "binary"
                  },
                  "description": {
                    "description": "A short description of the file.",
                    "type": "string"
                  }
                },
                "required": [
                  "document"
                ]
              }
            }
          }
        }
      }
    },
    "/requests/{id}/retry-dcv": {
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Retry DCV",
        "description": "Retry the Domain Control Validation (DCV).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The DCV will be retried shortly."
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The DCV will be retried shortly."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          },
          "410": {
            "description": "This request is archived or issued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestIsArchived"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestIsArchived"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "domain": {
                    "description": "The domain to retry the DCV for (only applicable for multi-domain certificates). Defaults to the Common Name.",
                    "type": "string"
                  },
                  "dcvType": {
                    "description": "The method used for Domain Control Validation, EMAIL, FILE or DNS. Required for all certificate types, except digital signatures.",
                    "type": "string",
                    "enum": [
                      "EMAIL",
                      "FILE",
                      "DNS"
                    ]
                  },
                  "email": {
                    "description": "The e-mail address to send the validation e-mail to (only applicable for DCV type \"EMAIL\").",
                    "type": "string"
                  }
                },
                "required": [
                  "dcvType"
                ]
              }
            }
          }
        }
      }
    },
    "/requests/{id}/sa": {
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Subscriber Agreement",
        "description": "Send the online Subscriber Agreement.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The Subscriber Agreement will be sent to the given e-mail address."
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The Subscriber Agreement will be sent to the given e-mail address."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "description": "The e-mail address to send the Subscriber Agreement e-mail to.",
                    "type": "string"
                  },
                  "language": {
                    "description": "The language in which the Subscriber Agreement should be sent, if not given, it uses the language of the request, or it defaults to nl.",
                    "type": "string",
                    "enum": [
                      "nl",
                      "en",
                      "de",
                      "fr",
                      "da",
                      "sv"
                    ]
                  }
                },
                "required": [
                  "email"
                ]
              }
            }
          }
        }
      }
    },
    "/requests/{id}/notes": {
      "get": {
        "tags": [
          "request"
        ],
        "summary": "Notes",
        "description": "Get all notes for the given request.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 1
                    },
                    "total": {
                      "type": "integer",
                      "example": 10
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "notes": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RequestNote"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 1
                    },
                    "total": {
                      "type": "integer",
                      "example": 10
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "notes": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RequestNote"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Notes",
        "description": "Add a new note to the given request.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The message is successfully sent."
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The message is successfully sent."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          },
          "410": {
            "description": "Request is archived or issued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestIsArchived"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestIsArchived"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "message": {
                    "description": "The message that should be linked to the request.",
                    "type": "string"
                  },
                  "endCustomer": {
                    "description": "Indicates whether the note was sent by the end customer (true) or the reseller (false)",
                    "type": "boolean"
                  }
                },
                "required": [
                  "message"
                ]
              }
            }
          }
        }
      }
    },
    "/requests/{id}/validation-calls": {
      "get": {
        "tags": [
          "request"
        ],
        "summary": "Schedule validation call",
        "description": "Get all validation call for the given request.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 1
                    },
                    "list": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ResponseValidationCalls"
                      }
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 1
                    },
                    "list": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ResponseValidationCalls"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      }
    },
    "/requests/{id}/schedule-validation-call": {
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Schedule validation call",
        "description": "File request to schedule a validation phone call.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The phone call has successfully been scheduled."
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The phone call has successfully been scheduled."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "date": {
                    "description": "The date (yyyy-mm-dd)",
                    "type": "string"
                  },
                  "time": {
                    "description": "The time (hh:mm)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "Optional timezone, if no timezone, or an invalid, is sent, we use Europe/Amsterdam as default. Valid timezones: http://php.net/manual/en/timezones.php",
                    "type": "string"
                  },
                  "action": {
                    "description": "Defaults to \"ScheduledCallback\". \n                  Can be any of \"ScheduledCallback\" - Schedule automatic Callback,\n                  \"ReplacePhone\" - Update phone number or change from email to phone,\n                  \"replaceEmailAddress\" - update callback email (OV only) or change from phone to email\n                  \"sendCallbackEmail\" - re-send callback email (OV only)",
                    "type": "string"
                  },
                  "phoneNumber": {
                    "description": "Update callback phone number. Required for \"ReplacePhone\" otherwise optional.",
                    "type": "string"
                  },
                  "extensionNumber": {
                    "description": "Internal extension number. Used by \"ScheduledCallback\" if needed.",
                    "type": "string"
                  },
                  "emailAddress": {
                    "description": "Phone callback customer email. Required for \"replaceEmailAddress\" optional otherwise.",
                    "type": "string"
                  },
                  "language": {
                    "description": "Language for Callback. Options are: 'en-us','ru-ru','de-de','es-es','pt-br','nl-nl','fr-fr'",
                    "type": "string"
                  },
                  "comments": {
                    "description": "Aditional information for sectigo support. Only used for \"ReplacePhone\" action.",
                    "type": "string"
                  }
                },
                "required": [
                  "date",
                  "time"
                ]
              }
            }
          }
        }
      }
    },
    "/requests/{id}/cancel": {
      "post": {
        "tags": [
          "request"
        ],
        "summary": "Cancel request",
        "description": "Cancel a certificate request.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the request.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The request has been cancelled successfully."
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The request has been cancelled successfully."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "reason": {
                    "description": "The reason for cancellation.",
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/certificates": {
      "get": {
        "tags": [
          "certificate"
        ],
        "summary": "All certificates",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number (default: 1). By default each page contains 20 results.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The number of results per page (1 - 100).",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 10
                    },
                    "total": {
                      "type": "integer",
                      "example": 198
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=10"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "certificates": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CertificateList"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 10
                    },
                    "total": {
                      "type": "integer",
                      "example": 198
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/certificates?page=10"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "certificates": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CertificateList"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/certificates/{id}": {
      "get": {
        "tags": [
          "certificate"
        ],
        "summary": "Single certificate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Certificate"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/Certificate"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      }
    },
    "/certificates/{id}/download": {
      "get": {
        "tags": [
          "certificate"
        ],
        "summary": "Download certificates",
        "description": "Download CSR, CRT, ZIP, PKCS7, CA or CA_BUNDLE files. Succesful requests will **always** return content-type `application/octet-stream`. Unsuccesful requests will **always** return content-type `application/json`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The requested file format (CSR, CRT, ZIP, PKCS7, CA or CA_BUNDLE). Defaults to CRT.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "CSR",
                "CRT",
                "ZIP",
                "PKCS7",
                "CA",
                "CA_BUNDLE"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      }
    },
    "/certificates/{id}/reissue": {
      "post": {
        "tags": [
          "certificate"
        ],
        "summary": "Reissue certificate",
        "description": "Reissue a certificate.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Request is successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "csr": {
                    "description": "The CSR (Certificate Signing Request). Required for all certificate types, except digital signatures.",
                    "type": "string"
                  },
                  "dcvType": {
                    "description": "The method used for Domain Control Validation, EMAIL, FILE or DNS. Required for all certificate types, except digital signatures.",
                    "type": "string",
                    "enum": [
                      "EMAIL",
                      "FILE",
                      "DNS"
                    ]
                  },
                  "subjectAlternativeNames": {
                    "description": "Comma-separated list of Subject Alternative Names (SAN), only applicable to multi-domain certificates.\nIf not provided, these will be taken from the CSR.\n",
                    "type": "string"
                  },
                  "dcv": {
                    "description": "The email address of the domain validation approver or the JSON representation of Domain Control Validation (DCV) preferences per domain, only applicable to multi-domain certificates.\nIf not provided, the defaults will be taken from the request dcvType and approverEmail (for EMAIL validation)\n",
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/dcv_array"
                      },
                      {
                        "$ref": "#/components/schemas/dcv_string"
                      }
                    ]
                  },
                  "company": {
                    "description": "The company name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "department": {
                    "description": "The department name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "address": {
                    "description": "The address of the building, house number and street name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "zipcode": {
                    "description": "The zip code / postal code (will be taken from the CSR when not explicitly passed)..",
                    "type": "string"
                  },
                  "city": {
                    "description": "The city (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "approverFirstName": {
                    "description": "The first name of the approver (This field is deprecated, please use approverRepresentativeFirstName).",
                    "type": "string"
                  },
                  "approverLastName": {
                    "description": "The last name of the approver (This field is deprecated, please use approverRepresentativeLastName).",
                    "type": "string"
                  },
                  "approverEmail": {
                    "description": "The email address of the domain validation approver (This field is deprecated, please use dcv).",
                    "type": "string"
                  },
                  "approverPhone": {
                    "description": "The phone number of the approver (This field is deprecated, please use approverRepresentativePhone).",
                    "type": "string"
                  },
                  "approverRepresentativeFirstName": {
                    "description": "The first name of the applicant who represents the business.",
                    "type": "string"
                  },
                  "approverRepresentativeLastName": {
                    "description": "The last name of the applicant who represents the business.",
                    "type": "string"
                  },
                  "approverRepresentativeEmail": {
                    "description": "E-mail address of applicant who represents the business, used for critical customer communications. Such as for validation for OV & EV Certificates.",
                    "type": "string"
                  },
                  "approverRepresentativePhone": {
                    "description": "The phone number of the applicant representative, mainly used for perform the Organizational callbacks.",
                    "type": "string"
                  },
                  "approverRepresentativePosition": {
                    "description": "The job title of the applicant who represents the business.",
                    "type": "string"
                  },
                  "kvk": {
                    "description": "The chamber of commerce number of the company.",
                    "type": "string"
                  },
                  "reference": {
                    "description": "The reference.",
                    "type": "string"
                  },
                  "disableFreeSan": {
                    "description": "Whether to disable the addition of the free www or non-www domain on Single Domain certificates. Default set is false.",
                    "type": "boolean"
                  }                  
                },
                "required": [
                  "approverEmail",
                  "csr",
                  "dcvType"
                ]
              }
            }
          }
        }
      }
    },
    "/certificates/{id}/renew": {
      "post": {
        "tags": [
          "certificate"
        ],
        "summary": "Renew certificate",
        "description": "renew a certificate.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Request is successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/Request"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "product": {
                    "description": "The unique identifier (ID) of the product.",
                    "type": "integer"
                  },
                  "years": {
                    "description": "The number of years the certificate should be valid.",
                    "type": "integer"
                  },
                  "csr": {
                    "description": "The CSR (Certificate Signing Request). Required for all certificate types, except digital signatures.",
                    "type": "string"
                  },
                  "dcvType": {
                    "description": "The method used for Domain Control Validation, EMAIL, FILE or DNS. Required for all certificate types, except digital signatures.",
                    "type": "string",
                    "enum": [
                      "EMAIL",
                      "FILE",
                      "DNS"
                    ]
                  },
                  "subjectAlternativeNames": {
                    "description": "Comma-separated list of Subject Alternative Names (SAN), only applicable to multi-domain certificates.\nIf not provided, these will be taken from the CSR.\n",
                    "type": "string"
                  },
                  "dcv": {
                    "description": "The email address of the domain validation approver or the JSON representation of Domain Control Validation (DCV) preferences per domain, only applicable to multi-domain certificates.\nIf not provided, the defaults will be taken from the request dcvType and approverEmail (for EMAIL validation)\n",
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/dcv_array"
                      },
                      {
                        "$ref": "#/components/schemas/dcv_string"
                      }
                    ]
                  },
                  "company": {
                    "description": "The company name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "department": {
                    "description": "The department name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "address": {
                    "description": "The address of the building, house number and street name (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "zipcode": {
                    "description": "The zip code / postal code (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "city": {
                    "description": "The city (will be taken from the CSR when not explicitly passed).",
                    "type": "string"
                  },
                  "approverFirstName": {
                    "description": "The first name of the approver (This field is deprecated, please use approverRepresentativeFirstName).",
                    "type": "string"
                  },
                  "approverLastName": {
                    "description": "The last name of the approver (This field is deprecated, please use approverRepresentativeLastName).",
                    "type": "string"
                  },
                  "approverEmail": {
                    "description": "The email address of the domain validation approver (This field is deprecated, please use dcv).",
                    "type": "string"
                  },
                  "approverPhone": {
                    "description": "The phone number of the approver (This field is deprecated, please use approverRepresentativePhone).",
                    "type": "string"
                  },
                  "approverRepresentativeFirstName": {
                    "description": "The first name of the applicant who represents the business.",
                    "type": "string"
                  },
                  "approverRepresentativeLastName": {
                    "description": "The last name of the applicant who represents the business.",
                    "type": "string"
                  },
                  "approverRepresentativeEmail": {
                    "description": "E-mail address of applicant who represents the business, used for critical customer communications. Such as for validation for OV & EV Certificates.",
                    "type": "string"
                  },
                  "approverRepresentativePhone": {
                    "description": "The phone number of the applicant representative, mainly used for perform the Organizational callbacks.",
                    "type": "string"
                  },
                  "approverRepresentativePosition": {
                    "description": "The job title of the applicant who represents the business.",
                    "type": "string"
                  },
                  "kvk": {
                    "description": "The chamber of commerce number of the company.",
                    "type": "string"
                  },
                  "reference": {
                    "description": "The reference.",
                    "type": "string"
                  },
                  "disableFreeSan": {
                    "description": "Whether to disable the addition of the free www or non-www domain on Single Domain certificates. Default set is false.",
                    "type": "boolean"
                  }                  
                },
                "required": [
                  "product",
                  "years",
                  "approverEmail",
                  "csr",
                  "dcvType"
                ]
              }
            }
          }
        }
      }
    },
    "/certificates/{id}/cancel": {
      "post": {
        "tags": [
          "certificate"
        ],
        "summary": "Cancel certificate",
        "description": "Cancel a certificate.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the certificate.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The certificate has been revoked successfully."
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "The certificate has been revoked successfully."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "reason": {
                    "description": "The reason for cancellation.",
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/approver-email-addresses": {
      "get": {
        "tags": [
          "support"
        ],
        "summary": "Allowed e-mail addresses for domain approval",
        "description": "List of approver e-mail addresses which may receive validation e-mails for the given domain.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "info@xolphin.nl"
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "info@xolphin.nl"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      }
    },
    "/decode-csr": {
      "post": {
        "tags": [
          "support"
        ],
        "summary": "Decode CSR",
        "description": "Retrieve all attributes the CSR contains.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CsrData"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/CsrData"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "csr": {
                    "description": "The Certificate Signing Request (CSR)",
                    "type": "string"
                  }
                },
                "required": [
                  "csr"
                ]
              }
            }
          }
        }
      }
    },
    "/products": {
      "get": {
        "tags": [
          "support"
        ],
        "summary": "All products",
        "description": "List of all available products. Fields \"includedDomains\", \"maxDomains\", \"priceExtra\" and \"priceExtraWildcard\" are only returend for multi-domain certificates.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number (default: 1). By default each page contains 20 results.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The number of results per page (1 - 100).",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 5
                    },
                    "total": {
                      "type": "integer",
                      "example": 96
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=5"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "products": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Product"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 5
                    },
                    "total": {
                      "type": "integer",
                      "example": 96
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/products?page=5"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "products": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Product"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          }
        }
      }
    },
    "/products/{id}": {
      "get": {
        "tags": [
          "support"
        ],
        "summary": "Single product",
        "description": "Retrieve a single product. Fields \"includedDomains\", \"maxDomains\", \"priceExtra\" and \"priceExtraWildcard\" are only returend for multi-domain certificates.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the product.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      }
    },
    "/invoices": {
      "get": {
        "tags": [
          "invoice"
        ],
        "summary": "All invoices",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number (default: 1). By default each page contains 20 results.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The number of results per page (1 - 100).",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 10
                    },
                    "total": {
                      "type": "integer",
                      "example": 198
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=10"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "requests": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/InvoiceList"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "application/hal+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "integer",
                      "example": 1
                    },
                    "limit": {
                      "type": "integer",
                      "example": 20
                    },
                    "pages": {
                      "type": "integer",
                      "example": 10
                    },
                    "total": {
                      "type": "integer",
                      "example": 198
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "self": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=1"
                            }
                          }
                        },
                        "first": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=1"
                            }
                          }
                        },
                        "next": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=2"
                            }
                          }
                        },
                        "last": {
                          "type": "object",
                          "properties": {
                            "href": {
                              "type": "string",
                              "example": "/v1/invoices?page=10"
                            }
                          }
                        }
                      }
                    },
                    "_embedded": {
                      "type": "object",
                      "properties": {
                        "requests": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/InvoiceList"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/invoices/{id}": {
      "get": {
        "tags": [
          "invoice"
        ],
        "summary": "Single invoice",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the invoice.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Invoice"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/Invoice"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/{id}/download": {
      "get": {
        "tags": [
          "invoice"
        ],
        "summary": "Download invoice",
        "description": "Download PDF and UBL files. Succesful requests will **always** return content-type `application/pdf` or `application/xml`. Unsuccesful requests will **always** return content-type `application/json`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (ID) of the invoice.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "The requested file type (PDF, UBL). Defaults to PDF.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PDF",
                "UBL"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              },
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "FileResponse": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string"
          }
        }
      },
      "CertificateList": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "domainName": {
            "type": "string",
            "example": "xolphin.nl"
          },
          "dateIssued": {
            "type": "string",
            "format": "date-time",
            "example": "2014-04-03 00:00:00 UTC"
          },
          "dateExpired": {
            "type": "string",
            "format": "date-time",
            "example": "2015-04-03 00:00:00 UTC"
          },
          "dateSubscriptionExpired": {
            "type": "string",
            "format": "date-time",
            "example": "2015-04-03 00:00:00 UTC"
          },
          "company": {
            "type": "string",
            "example": "Xolphin"
          },
          "_links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1"
                  }
                }
              },
              "reissue": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/reissue"
                  }
                }
              },
              "renew": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/renew"
                  }
                }
              },
              "cancel": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/cancel"
                  }
                }
              },
              "download": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/download"
                  }
                }
              }
            }
          },
          "_embedded": {
            "type": "object",
            "properties": {
              "product": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "PremiumSSL"
                  },
                  "brand": {
                    "type": "string",
                    "example": "Comodo"
                  },
                  "_links": {
                    "type": "object",
                    "properties": {
                      "self": {
                        "type": "object",
                        "properties": {
                          "href": {
                            "type": "string",
                            "example": "/v1/products/1"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Certificate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "domainName": {
            "type": "string",
            "example": "xolphin.nl"
          },
          "subjectAlternativeNames": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "xolphin.nl"
            }
          },
          "dateIssued": {
            "type": "string",
            "format": "date-time",
            "example": "2014-04-03 00:00:00 UTC"
          },
          "dateExpired": {
            "type": "string",
            "format": "date-time",
            "example": "2015-04-03 00:00:00 UTC"
          },
          "dateSubscriptionExpired": {
            "type": "string",
            "format": "date-time",
            "example": "2015-04-03 00:00:00 UTC"
          },
          "company": {
            "type": "string",
            "example": "Xolphin"
          },
          "_links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/certificates/1"
                  }
                }
              },
              "reissue": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/certificates/1/reissue"
                  }
                }
              },
              "renew": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/certificates/1/renew"
                  }
                }
              },
              "cancel": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/certificates/1/cancel"
                  }
                }
              },
              "download": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/certificates/1/download"
                  }
                }
              }
            }
          },
          "_embedded": {
            "type": "object",
            "properties": {
              "product": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "PremiumSSL"
                  },
                  "brand": {
                    "type": "string",
                    "example": "Comodo"
                  },
                  "_links": {
                    "type": "object",
                    "properties": {
                      "self": {
                        "type": "object",
                        "properties": {
                          "href": {
                            "type": "string",
                            "example": "/v1/products/1"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "EncryptionEverywhereCertificate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 859252870
          },
          "dateOrdered": {
            "type": "string",
            "format": "date-time",
            "example": "2019-11-21 15:18:06"
          },
          "crt": {
            "type": "string",
            "example": "-----BEGIN CERTIFICATE-----\\r\\nMIIFgzCCBGugAw..."
          },
          "pkcs7": {
            "type": "string",
            "example": "-----BEGIN PKCS7-----\\nMIIFtAYJKoZIhvcNAQcCo..."
          },
          "chain": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "pem": {
                  "type": "string",
                  "example": "-----BEGIN CERTIFICATE-----\r\nMIIFgzCCBGugAwIBAgIQAuyypqj..."
                },
                "cert_type": {
                  "type": "string",
                  "example": "end_entity"
                }
              }
            }
          }
        }
      },
      "CsrData": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "example": "RSA"
          },
          "size": {
            "type": "integer",
            "example": 2048
          },
          "company": {
            "type": "string",
            "example": "Xolphin B.V."
          },
          "cn": {
            "type": "string",
            "example": "xolphin.nl"
          },
          "state": {
            "type": "string",
            "example": "Noord-Holland"
          },
          "city": {
            "type": "string",
            "example": "Alkmaar"
          },
          "country": {
            "type": "string",
            "example": "NL"
          },
          "altNames": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "dNSName": {
                  "type": "string",
                  "example": "mail.xolphin.nl"
                }
              }
            }
          }
        }
      },
      "dcv_string": {
        "type": "string",
        "example": "asd@asd.com"
      },
      "dcv_array": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/DcvObj"
        }
      },
      "DcvObj": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "example": "xolphin.nl"
          },
          "dcvType": {
            "type": "string",
            "example": "EMAIL"
          },
          "approverEmail": {
            "type": "string",
            "example": "admin@xolphin.com"
          }
        }
      },
      "Product": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "brand": {
            "type": "string",
            "example": "Comodo"
          },
          "name": {
            "type": "string",
            "example": "PositiveSSL"
          },
          "type": {
            "type": "string",
            "example": "MULTI"
          },
          "validation": {
            "type": "string",
            "example": "DV"
          },
          "includedDomains": {
            "type": "integer",
            "example": 3
          },
          "maxDomains": {
            "type": "integer",
            "example": 100
          },
          "prices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "years": {
                  "type": "integer",
                  "example": 2
                },
                "price": {
                  "type": "string",
                  "example": "35.00"
                },
                "priceExtra": {
                  "type": "string",
                  "example": "15.00"
                },
                "priceExtraWildcard": {
                  "type": "string",
                  "example": "30.00"
                }
              }
            }
          },
          "_links": {
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/products/1"
                  }
                }
              }
            }
          }
        }
      },
      "RequestList": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "domainName": {
            "type": "string",
            "example": "xolphin.nl"
          },
          "company": {
            "type": "string",
            "example": "Xolphin"
          },
          "dateOrdered": {
            "type": "string",
            "format": "date-time",
            "example": "2015-09-23 09:05:21 -0400"
          },
          "subjectAlternativeNames": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string",
                  "example": "xolphin.nl"
                },
                {
                  "type": "string",
                  "example": "xolphin.org"
                }
              ]
            }
          },
          "validations": {
            "type": "object",
            "properties": {
              "docs": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean"
                  }
                }
              },
              "organization": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean"
                  }
                }
              },
              "phone": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean"
                  }
                }
              },
              "whois": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean"
                  }
                }
              },
              "dcv": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean"
                  }
                }
              }
            }
          },
          "requiresAction": {
            "type": "boolean",
            "example": true
          },
          "_links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1"
                  }
                }
              },
              "uploadDocument": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/upload-document"
                  }
                }
              },
              "retryDcv": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/retry-dcv"
                  }
                }
              },
              "scheduleValidationCall": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/schedule-validation-call"
                  }
                }
              }
            }
          },
          "_embedded": {
            "type": "object",
            "properties": {
              "product": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "PremiumSSL"
                  },
                  "brand": {
                    "type": "string",
                    "example": "Comodo"
                  },
                  "_links": {
                    "type": "object",
                    "properties": {
                      "self": {
                        "type": "object",
                        "properties": {
                          "href": {
                            "type": "string",
                            "example": "/v1/products/1"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Request": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "domainName": {
            "type": "string",
            "example": "xolphin.com"
          },
          "subjectAlternativeNames": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string",
                  "example": "xolphin.nl"
                },
                {
                  "type": "string",
                  "example": "xolphin.org"
                }
              ]
            }
          },
          "years": {
            "type": "integer",
            "example": 1
          },
          "company": {
            "type": "string",
            "example": "Xolphin"
          },
          "dateOrdered": {
            "type": "string",
            "format": "date-time",
            "example": "2015-09-23 09:05:21 -0400"
          },
          "department": {
            "type": "string",
            "example": "Support"
          },
          "address": {
            "type": "string",
            "example": "Rogier van der Weydestraat 2"
          },
          "zipcode": {
            "type": "string",
            "example": "1817 MJ"
          },
          "city": {
            "type": "string",
            "example": "Alkmaar"
          },
          "province": {
            "type": "string",
            "example": "Noord-Holland"
          },
          "country": {
            "type": "string",
            "example": "NL"
          },
          "reference": {
            "type": "string",
            "example": "xolphin.nl"
          },
          "approverRepresentativeFirstName": {
            "type": "string",
            "example": "John"
          },
          "approverRepresentativeLastName": {
            "type": "string",
            "example": "Doe"
          },
          "approverRepresentativeEmail": {
            "type": "string",
            "example": "john.doe@xolphin.nl"
          },
          "approverRepresentativePhone": {
            "type": "string",
            "example": "+31 72 799 207 3"
          },
          "approverRepresentativePosition": {
            "type": "string",
            "example": "Director"
          },
          "approverFirstName": {
            "type": "string",
            "example": ""
          },
          "approverLastName": {
            "type": "string",
            "example": ""
          },
          "approverEmail": {
            "type": "string",
            "example": "admin@xolphin.nl"
          },
          "approverPhone": {
            "type": "string",
            "example": ""
          },
          "kvk": {
            "type": "string",
            "example": "37101223"
          },
          "brandValidation": {
            "type": "boolean",
            "example": true
          },
          "validations": {
            "type": "object",
            "properties": {
              "request": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean",
                    "example": true
                  },
                  "statusDetail": {
                    "type": "integer",
                    "example": 1
                  },
                  "statusMessage": {
                    "type": "string",
                    "example": "validated"
                  }
                }
              },
              "docs": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean",
                    "example": true
                  },
                  "statusDetail": {
                    "type": "integer",
                    "example": 1
                  },
                  "statusMessage": {
                    "type": "string",
                    "example": "validated"
                  }
                }
              },
              "organization": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean",
                    "example": false
                  },
                  "statusDetail": {
                    "type": "integer",
                    "example": -1
                  },
                  "statusMessage": {
                    "type": "string",
                    "example": "attention"
                  }
                }
              },
              "phone": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean",
                    "example": false
                  },
                  "statusDetail": {
                    "type": "integer",
                    "example": 0
                  },
                  "statusMessage": {
                    "type": "string",
                    "example": "waiting"
                  }
                }
              },
              "whois": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean",
                    "example": true
                  },
                  "statusDetail": {
                    "type": "integer",
                    "example": 1
                  },
                  "statusMessage": {
                    "type": "string",
                    "example": "validated"
                  }
                }
              },
              "dcv": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean",
                    "example": false
                  },
                  "statusDetail": {
                    "type": "integer",
                    "example": 0
                  },
                  "statusMessage": {
                    "type": "string",
                    "example": "waiting"
                  },
                  "domains": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "domain": {
                              "type": "string",
                              "example": "xolphin.com"
                            },
                            "status": {
                              "type": "boolean",
                              "example": false
                            },
                            "statusDetail": {
                              "type": "integer",
                              "example": 0
                            },
                            "statusMessage": {
                              "type": "string",
                              "example": "waiting"
                            },
                            "dcvType": {
                              "type": "string",
                              "example": "EMAIL"
                            },
                            "dcvEmail": {
                              "type": "string",
                              "example": "hostmaster@xolphin.com"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "properties": {
                            "domain": {
                              "type": "string",
                              "example": "xolphin.org"
                            },
                            "status": {
                              "type": "boolean",
                              "example": false
                            },
                            "statusDetail": {
                              "type": "integer",
                              "example": 0
                            },
                            "statusMessage": {
                              "type": "string",
                              "example": "waiting"
                            },
                            "dcvType": {
                              "type": "string",
                              "example": "DNS"
                            },
                            "md5": {
                              "type": "string",
                              "example": "bfddd6df02348e1222409cb6c347e18e"
                            },
                            "sha1": {
                              "type": "string",
                              "example": "ab989e3d54b942a4e0182080d664449c8694022a"
                            },
                            "dnsRecord": {
                              "type": "string",
                              "example": "_bfddd6df02348e1222409cb6c347e18e.www.xolphin.org"
                            },
                            "dnsCnameValue": {
                              "type": "string",
                              "example": "7b577e8b5f14812827c4b6e845d36b08.da2d74c383c582ca3b93aad571b1d5f0.comodoca.com"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "properties": {
                            "domain": {
                              "type": "string",
                              "example": "xolphin.nl"
                            },
                            "status": {
                              "type": "boolean",
                              "example": false
                            },
                            "statusDetail": {
                              "type": "integer",
                              "example": 0
                            },
                            "statusMessage": {
                              "type": "string",
                              "example": "waiting"
                            },
                            "dcvType": {
                              "type": "string",
                              "example": "FILE"
                            },
                            "md5": {
                              "type": "string",
                              "example": "34FDD90264886D4CCBFE21D122E30B7E"
                            },
                            "sha1": {
                              "type": "string",
                              "example": "182a3db99ec869402d664449a42a4e0580208b94"
                            },
                            "fileLocation": {
                              "type": "string",
                              "example": "www.xolphin.nl/.well-known/pki-validation/34FDD90264886D4CCBFE21D122E30B7E.txt"
                            },
                            "fileContents": {
                              "type": "string",
                              "example": "7b5ca2d7a335b0677e82827c4b383c53b71b148845d126eb9daad54cf1d885f0\\ncomodoca.com"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              },
              "final_approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "boolean",
                    "example": false
                  },
                  "statusDetail": {
                    "type": "integer",
                    "example": 0
                  },
                  "statusMessage": {
                    "type": "string",
                    "example": "waiting"
                  }
                }
              }
            }
          },
          "requiresAction": {
            "type": "boolean",
            "example": true
          },
          "_links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1"
                  }
                }
              },
              "uploadDocument": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/upload-document"
                  }
                }
              },
              "retryDcv": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/retry-dcv"
                  }
                }
              },
              "sa": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/sa"
                  }
                }
              },
              "scheduleValidationCall": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/schedule-validation-call"
                  }
                }
              },
              "notes": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1/notes"
                  }
                }
              }
            }
          },
          "_embedded": {
            "type": "object",
            "properties": {
              "product": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "PremiumSSL"
                  },
                  "brand": {
                    "type": "string",
                    "example": "Comodo"
                  },
                  "_links": {
                    "type": "object",
                    "properties": {
                      "self": {
                        "type": "object",
                        "properties": {
                          "href": {
                            "type": "object",
                            "example": "/v1/products/1"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "notes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RequestNote"
                }
              }
            }
          }
        }
      },
      "Note": {
        "type": "object",
        "properties": {
          "sender": {
            "type": "string",
            "example": "client"
          },
          "fullName": {
            "type": "string",
            "example": "John Doe"
          },
          "note": {
            "type": "string",
            "example": "Please provide some documents."
          },
          "createdAt": {
            "type": "string",
            "example": "2015-09-23 09:05:21 -0400"
          },
          "_links": {
            "type": "object",
            "properties": {
              "request": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/requests/1"
                  }
                }
              }
            }
          }
        }
      },
      "RequestNote": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "contact": {
            "type": "string",
            "example": "Customer Name"
          },
          "staff": {
            "type": "string",
            "example": "Xolphin Staff"
          },
          "date": {
            "type": "string",
            "format": "date",
            "example": "2015-11-05"
          },
          "time": {
            "type": "string",
            "example": "13:37"
          },
          "message": {
            "type": "string",
            "example": "The subscriber agreement has been sent to mail@domain.nl."
          },
          "createdAt": {
            "type": "string",
            "example": "2015-11-05T13:37:00+0200"
          },
          "endCustomer": {
            "type": "boolean",
            "example": false
          }
        }
      },
      "ResponseValidationCalls": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "integer",
            "example": 859252870
          },
          "date": {
            "type": "string",
            "format": "date",
            "example": "2019-05-25"
          },
          "time": {
            "type": "string",
            "example": "10:30:00"
          },
          "originalTimezone":  {
            "type": "string",
            "example": "Europe/London"
          },
          "action": {
            "type": "string",
            "enum": [
              "ScheduledCallback",
              "ReplacePhone",
              "replaceEmailAddress",
              "sendCallbackEmail"
            ]
          },
          "phoneNumber": {
            "type": "string",
            "example": "+44123456123"
          },
          "extensionNumber": {
            "type": "string",
            "example": "5"
          },
          "emailAddress": {
            "type": "string",
            "example": "support@xolphin.nl"
          },
          "language": {
            "type": "string",
            "example": "en-us"
          },
          "comments": {
            "type": "string",
            "example": "Ask for the sysadmin"
          }
        }
      },
      "SslCheck": {
        "type": "object",
        "properties": {
          "issuedTo": {
            "type": "object",
            "properties": {
              "commonName": {
                "type": "string",
                "example": "xolphin.nl"
              },
              "company": {
                "type": "string",
                "example": "Xolphin SSL Certificaten"
              },
              "department": {
                "type": "string",
                "example": "IT"
              },
              "city": {
                "type": "string",
                "example": "Alkmaar"
              },
              "state": {
                "type": "string",
                "example": "Noord-Holland"
              },
              "country": {
                "type": "string",
                "example": "NL"
              }
            }
          },
          "issuedBy": {
            "type": "object",
            "properties": {
              "commonName": {
                "type": "string",
                "example": "comodo.com"
              },
              "company": {
                "type": "string",
                "example": "COMODO CA Limited"
              },
              "country": {
                "type": "string",
                "example": "UK"
              }
            }
          },
          "fingerprints": {
            "type": "object",
            "properties": {
              "md5": {
                "type": "string",
                "example": "d1:7c:ec:5d:72:e9:83:82:0a:60:c0:13:ff:02:89:0d"
              },
              "sha1": {
                "type": "string",
                "example": "8b:48:e4:c4:ce:ff:64:1d:9f:8e:c5:2d:43:3b:9d:b6:9e:42:33:1f"
              },
              "serial": {
                "type": "string",
                "example": "UK"
              }
            }
          },
          "publicKey": {
            "type": "object",
            "properties": {
              "alog": {
                "type": "string",
                "example": "RSA"
              },
              "bitsLen": {
                "type": "integer",
                "example": 2048
              }
            }
          },
          "signature": {
            "type": "object",
            "properties": {
              "alog": {
                "type": "string",
                "example": "RSA"
              }
            }
          },
          "validity": {
            "type": "object",
            "properties": {
              "issuedOn": {
                "type": "string",
                "example": "2015-10-01T00:00:00+0100"
              },
              "expiresOn": {
                "type": "string",
                "example": "2018-10-01T00:00:00+0100"
              },
              "issuedValid": {
                "type": "boolean",
                "example": true
              },
              "expiresValid": {
                "type": "boolean",
                "example": false
              },
              "dateValid": {
                "type": "boolean",
                "example": false
              },
              "daysLeft": {
                "type": "integer",
                "example": 56
              }
            }
          },
          "domains": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "BadRequestError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Bad request."
          },
          "errors": {
            "type": "object",
            "properties": {
              "fieldName": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "Field X is missing."
                }
              }
            }
          }
        }
      },
      "BadRequestInvalidUrl": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Bad request."
          },
          "errors": {
            "type": "object",
            "properties": {
              "webhookUrl": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "example": "X must be a valid URL"
                    },
                    {
                      "type": "string",
                      "example": "X must have one of the following schemes: http, https"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "UnprocessableEntityError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Client error 422"
          },
          "errors": {
            "type": "object",
            "properties": {
              "fieldName": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "Incorrect file content."
                }
              }
            }
          }
        }
      },
      "NotFoundError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Resource not found."
          }
        }
      },
      "RequestIsArchived": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "This request is archived or issued"
          }
        }
      },
      "Client": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "company": {
            "type": "string",
            "example": "Xolphin B. V."
          },
          "name": {
            "type": "string",
            "example": "John Doe"
          },
          "phone": {
            "type": "string",
            "example": "+31 72 799 207 3"
          },
          "email": {
            "type": "string",
            "example": "support@xolphin.com"
          },
          "fax": {
            "type": "string",
            "example": "+31 72 799 207 3"
          },
          "address": {
            "type": "string",
            "example": "Rogier van der Weydestraat 2"
          },
          "zipCode": {
            "type": "string",
            "example": "1817 MJ"
          },
          "city": {
            "type": "string",
            "example": "Alkmaar"
          },
          "country": {
            "type": "string",
            "example": "NL"
          },
          "invoiceName": {
            "type": "string",
            "example": "John Doe"
          },
          "invoiceEmail": {
            "type": "string",
            "example": "support@xolphin.com"
          },
          "invoiceAddress": {
            "type": "string",
            "example": "Rogier van der Weydestraat 2"
          },
          "invoiceZipCode": {
            "type": "string",
            "example": "1817 MJ"
          },
          "invoiceCity": {
            "type": "string",
            "example": "Alkmaar"
          },
          "invoiceCountry": {
            "type": "string",
            "example": "NL"
          },
          "vat": {
            "type": "string",
            "example": "15698525"
          },
          "kvk": {
            "type": "string",
            "example": "15697899"
          }
        }
      },
      "InvoiceList": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "currency": {
            "type": "string",
            "example": "EUR"
          },
          "amount": {
            "type": "number",
            "example": "54.00"
          },
          "tax": {
            "type": "number",
            "example": "11.34"
          },
          "invoiceNr": {
            "type": "integer",
            "example": "5893"
          },
          "amountPaid": {
            "type": "number",
            "example": "0.00"
          },
          "status": {
            "type": "string",
            "example": "Open"
          },
          "total": {
            "type": "number",
            "example": "10.00"
          },
          "date_created": {
            "type": "string",
            "format": "date-time",
            "example": "2015-04-03 00:00:00 UTC"
          },
          "date_reminder": {
            "type": "string",
            "format": "date-time",
            "example": "2015-04-04 00:00:00 UTC"
          },
          "date_payed": {
            "type": "string",
            "format": "date-time",
            "example": "2015-04-04 00:00:00 UTC"
          },
          "requiresAction": {
            "type": "boolean",
            "example": true
          },
          "_links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/invoices/1"
                  }
                }
              },
              "download": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/invoices/1/download"
                  }
                }
              }
            }
          }
        }
      },
      "Invoice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 1
          },
          "currency": {
            "type": "string",
            "example": "EUR"
          },
          "amount": {
            "type": "number",
            "example": "54.00"
          },
          "tax": {
            "type": "number",
            "example": "11.34"
          },
          "invoiceNr": {
            "type": "integer",
            "example": "5893"
          },
          "amountPaid": {
            "type": "number",
            "example": "0.00"
          },
          "status": {
            "type": "string",
            "example": "Open"
          },
          "total": {
            "type": "number",
            "example": "10.00"
          },
          "date_created": {
            "type": "string",
            "format": "date",
            "example": "2015-04-03 00:00:00 UTC"
          },
          "date_reminder": {
            "type": "string",
            "format": "date",
            "example": "2015-04-04 00:00:00 UTC"
          },
          "date_payed": {
            "type": "string",
            "format": "date",
            "example": "2015-04-04 00:00:00 UTC"
          },
          "requiresAction": {
            "type": "boolean",
            "example": true
          },
          "_links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/invoices/1"
                  }
                }
              },
              "download": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "example": "/v1/invoices/1/download"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}