{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "Fakturia API",
    "description" : "The Fakturia API is an open interface using the REST standard.<br/>It allows developers to directly interact with our billing and subscription management application.<br/>The API can only be accessed if the following conditions are true:<ul><li>Your Fakturia plan includes API access</li><li>The API is activated in the backend for at least one project</li><li>An API-Key has been generated in the backend</li><li>The IP address of your client has been added to the IP whitelist for the project</li></ul>",
    "contact" : {
      "url" : "https://www.fakturia.de",
      "email" : "support@fakturia.de"
    },
    "version" : "v1"
  },
  "externalDocs" : {
    "description" : "Fakturia Wiki: REST API",
    "url" : "https://wiki.fakturia.de/wiki/REST%20API/"
  },
  "paths" : {
    "/api/v1/InvoiceCorrections/{invoiceCorrectionNumber}/Document" : {
      "get" : {
        "tags" : [ "Invoices" ],
        "summary" : "Retrieve the invoice correction PDF document",
        "description" : "Retrieve the invoice correction PDF document for a given invoice correction number. The returned data is base64 encoded.",
        "operationId" : "invoiceCorrectionDocument",
        "parameters" : [ {
          "name" : "invoiceCorrectionNumber",
          "in" : "path",
          "description" : "the invoice correction number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "RK3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one InvoiceCorrectionDocument",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvoiceCorrectionDocument"
                }
              }
            }
          },
          "404" : {
            "description" : "if the invoice correction with the given invoice correction number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CreditNoteCorrections/{creditNoteCorrectionNumber}" : {
      "get" : {
        "tags" : [ "CreditNotes" ],
        "summary" : "Retrieve one credit note correction",
        "description" : "Retrieve one credit note correction by its number",
        "operationId" : "creditNoteCorrectionByNumber",
        "parameters" : [ {
          "name" : "creditNoteCorrectionNumber",
          "in" : "path",
          "description" : "the credit note correction number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GK3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one CreditNote correction",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditNoteCorrection"
                }
              }
            }
          },
          "404" : {
            "description" : "if the credit note correction with the given number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CreditNoteCorrections/{creditNoteCorrectionNumber}/Document" : {
      "get" : {
        "tags" : [ "CreditNotes" ],
        "summary" : "Retrieve the credit note correction PDF document",
        "description" : "Retrieve the credit note correction PDF document for a given credit note correction number. The returned data is base64 encoded.",
        "operationId" : "creditNoteCorrectionDocument",
        "parameters" : [ {
          "name" : "creditNoteCorrectionNumber",
          "in" : "path",
          "description" : "the credit note correction number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GK3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one CreditNote correction Document",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditNoteCorrectionDocument"
                }
              }
            }
          },
          "404" : {
            "description" : "if the credit note correction with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/InvoiceCorrections" : {
      "get" : {
        "tags" : [ "Invoices" ],
        "summary" : "Retrieve invoice corrections",
        "description" : "Filter parameters: customerNumber, contractNumber, dateFrom, dateTo, currency",
        "operationId" : "invoiceCorrectionList",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "query",
          "description" : "optional filter for customer number",
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        }, {
          "name" : "contractNumber",
          "in" : "query",
          "description" : "optional filter for contract number",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 12
        }, {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "specifies the start within the range of the returned invoice corrections. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "specifies the end within the range of the returned invoice corrections. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        }, {
          "name" : "currency",
          "in" : "query",
          "description" : "optional filter for currency",
          "schema" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "example" : "EUR"
        }, {
          "name" : "documentDeliveryMode",
          "in" : "query",
          "description" : "optional filter for document delivery mode",
          "schema" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "example" : "EMAIL"
        }, {
          "name" : "extendedData",
          "in" : "query",
          "description" : "load additional data with invoice correction (payitems, account etc.) Caution: increased execution time. default = false",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of InvoiceCorrection",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/InvoiceCorrection"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "if customerNumber is specified AND the customer with the given customer number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CreditNotes" : {
      "get" : {
        "tags" : [ "CreditNotes" ],
        "summary" : "Retrieve credit notes",
        "description" : "Filter parameters: customerNumber, contractNumber, dateFrom, dateTo, currency, unpaidOnly",
        "operationId" : "creditNoteList",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "query",
          "description" : "optional filter for customer number",
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        }, {
          "name" : "contractNumber",
          "in" : "query",
          "description" : "optional filter for contract number",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 12
        }, {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "specifies the start within the range of the returned credit notes. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "specifies the end within the range of the returned credit notes. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        }, {
          "name" : "currency",
          "in" : "query",
          "description" : "optional filter for currency",
          "schema" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "example" : "EUR"
        }, {
          "name" : "documentDeliveryMode",
          "in" : "query",
          "description" : "optional filter for document delivery mode",
          "schema" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "example" : "EMAIL"
        }, {
          "name" : "unpaidOnly",
          "in" : "query",
          "description" : "only show open (not fully paid out) credit notes. default = false",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of CreditNote",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/CreditNote"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "if customerNumber is specified AND the customer with the given customer number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/InvoiceCorrections/{invoiceCorrectionNumber}" : {
      "get" : {
        "tags" : [ "Invoices" ],
        "summary" : "Retrieve one invoice correction",
        "description" : "Retrieve one invoice correction by its invoice correction number",
        "operationId" : "invoiceCorrectionByNumber",
        "parameters" : [ {
          "name" : "invoiceCorrectionNumber",
          "in" : "path",
          "description" : "the invoice correction number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "RK3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one InvoiceCorrection",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvoiceCorrection"
                }
              }
            }
          },
          "404" : {
            "description" : "if the invoice correction with the given invoice correction number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/authtest" : {
      "get" : {
        "tags" : [ "dummy" ],
        "summary" : "Authentication test",
        "description" : "Test method to check for valid API key. Own tenant data is returned.",
        "operationId" : "authTest",
        "responses" : {
          "default" : {
            "description" : "own tenant data",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Tenant"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Projects" : {
      "get" : {
        "tags" : [ "Projects" ],
        "summary" : "Retrieve all projects",
        "operationId" : "projectList",
        "responses" : {
          "default" : {
            "description" : "list of Project",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Project"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Projects/{shortName}/Contracts" : {
      "get" : {
        "tags" : [ "Projects", "Contracts" ],
        "summary" : "Retrieve all contracts for a project",
        "description" : "Retrieve all contracts for a project by the projects short name.",
        "operationId" : "contractsByProject",
        "parameters" : [ {
          "name" : "shortName",
          "in" : "path",
          "description" : "the project shortname",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "project1"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Contract"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CreditNotes/{creditNoteNumber}" : {
      "get" : {
        "tags" : [ "CreditNotes" ],
        "summary" : "Retrieve one credit note",
        "description" : "Retrieve one credit note by its number",
        "operationId" : "creditNoteByNumber",
        "parameters" : [ {
          "name" : "creditNoteNumber",
          "in" : "path",
          "description" : "the credit note number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "G3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one CreditNote",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditNote"
                }
              }
            }
          },
          "404" : {
            "description" : "if the credit note with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CreditNotes/{creditNoteNumber}/Document" : {
      "get" : {
        "tags" : [ "CreditNotes" ],
        "summary" : "Retrieve the credit note PDF document",
        "description" : "Retrieve the credit note PDF document for a given credit note number. The returned data is base64 encoded.",
        "operationId" : "creditNoteDocument",
        "parameters" : [ {
          "name" : "creditNoteNumber",
          "in" : "path",
          "description" : "the credit note number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "G3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one CreditNoteDocument",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditNoteDocument"
                }
              }
            }
          },
          "404" : {
            "description" : "if the credit note with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CreditNoteCorrections" : {
      "get" : {
        "tags" : [ "CreditNotes" ],
        "summary" : "Retrieve credit note corrections",
        "description" : "Filter parameters: customerNumber, contractNumber, dateFrom, dateTo, currency, unpaidOnly",
        "operationId" : "creditNoteCorrectionList",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "query",
          "description" : "optional filter for customer number",
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        }, {
          "name" : "contractNumber",
          "in" : "query",
          "description" : "optional filter for contract number",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 12
        }, {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "specifies the start within the range of the returned credit note corrections. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "specifies the end within the range of the returned credit note corrections. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        }, {
          "name" : "currency",
          "in" : "query",
          "description" : "optional filter for currency",
          "schema" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "example" : "EUR"
        }, {
          "name" : "documentDeliveryMode",
          "in" : "query",
          "description" : "optional filter for document delivery mode",
          "schema" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "example" : "EMAIL"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of CreditNote corrections",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/CreditNoteCorrection"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "if customerNumber is specified AND the customer with the given customer number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/dummy" : {
      "get" : {
        "tags" : [ "dummy" ],
        "summary" : "Dummy data",
        "description" : "Retrieves some dummy data to show the representation of certain data types.",
        "operationId" : "dummy",
        "parameters" : [ {
          "name" : "testLocalDate",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "format" : "date"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "one Dummy object",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Dummy"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Accounts" : {
      "get" : {
        "tags" : [ "Accounts" ],
        "summary" : "Retrieve all accounts",
        "description" : "Retrieve all existing accounts",
        "operationId" : "accountList",
        "responses" : {
          "default" : {
            "description" : "list of Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Account"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Accounts" ],
        "summary" : "Create a new account",
        "description" : "Create a new account for a customer. account number is assigned automatically.",
        "operationId" : "createAccount",
        "requestBody" : {
          "description" : "the account to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Account"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Account"
                }
              }
            }
          },
          "400" : {
            "description" : "if the account could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Accounts/{accountNumber}" : {
      "get" : {
        "tags" : [ "Accounts" ],
        "summary" : "Retrieve an account",
        "description" : "Retrieve an account from given account number",
        "operationId" : "accountByNumber",
        "parameters" : [ {
          "name" : "accountNumber",
          "in" : "path",
          "description" : "account number wich identifies the selected account",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 42
        } ],
        "responses" : {
          "default" : {
            "description" : "one Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Account"
                }
              }
            }
          },
          "404" : {
            "description" : "if the account does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Accounts" ],
        "summary" : "Update an existing account",
        "description" : "update the account data for the given accountNumber. All attributes will be overwritten! Please always provide the complete record.",
        "operationId" : "updateAccount",
        "parameters" : [ {
          "name" : "accountNumber",
          "in" : "path",
          "description" : "the account number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 1000
        } ],
        "requestBody" : {
          "description" : "the account to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Account"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Account"
                }
              }
            }
          },
          "400" : {
            "description" : "if the account could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Accounts/{accountNumber}/changeCustomer" : {
      "post" : {
        "tags" : [ "Accounts" ],
        "summary" : "Change the customer",
        "description" : "Change the customer owning this account. Please take care and read hints in the GUI for this action!",
        "operationId" : "changeCustomer",
        "parameters" : [ {
          "name" : "accountNumber",
          "in" : "path",
          "description" : "the account number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "customerNumber",
          "in" : "query",
          "description" : "customer number for customer that shall be assigned to the account",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "the reassigned account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Account"
                }
              }
            }
          },
          "400" : {
            "description" : "if the new customer cannot be assigned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          },
          "404" : {
            "description" : "if the accountNumber or customer does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Accounts/{accountNumber}/Transactions" : {
      "get" : {
        "tags" : [ "Accounts" ],
        "summary" : "Retrieve the transactions from an account in a defined period",
        "description" : "Retrieve the transactions for an given account and a given daterange.",
        "operationId" : "transactionsByAccountNumber",
        "parameters" : [ {
          "name" : "accountNumber",
          "in" : "path",
          "description" : "account number wich identifies the selected account",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 42
        }, {
          "name" : "transactionsFrom",
          "in" : "query",
          "description" : "specifies the start within the range of the returned transactions",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "transactionsTo",
          "in" : "query",
          "description" : "specifies the end within the range of the returned transactions",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of AccountTransaction",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/AccountTransaction"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "if the account with the given account number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Accounts" ],
        "summary" : "Create a new transaction for a given account",
        "description" : "Create a new transaction on the customers account.",
        "operationId" : "createAccountTransaction",
        "parameters" : [ {
          "name" : "accountNumber",
          "in" : "path",
          "description" : "the account number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the transaction to create.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AccountTransaction"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the affected account after transaction has been applied.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Account"
                }
              }
            }
          },
          "400" : {
            "description" : "if the transaction could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/Activities" : {
      "get" : {
        "tags" : [ "Contracts", "Activities" ],
        "summary" : "Retrieve all activities for a contract",
        "description" : "Retrieve all activities for a contract by the contract number. Filter parameters: dateFrom, dateTo",
        "operationId" : "contractActivities",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "specifies the start of range for performance date",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "specifies the end of range for performance date",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Activity",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Activity"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "if the contract with the given contract number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts", "Activities" ],
        "summary" : "Create a new activity record for a contract",
        "description" : "Create a new activity entry for a given contract. If you want to override the system price set a value for 'individualPrice'",
        "operationId" : "createActivity",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the activity to create. if you want to override the system price set a value for 'individualPrice'",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Activity"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created activity",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Activity"
                }
              }
            }
          },
          "400" : {
            "description" : "if the activity could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Activities/{uuid}" : {
      "delete" : {
        "tags" : [ "Activities" ],
        "summary" : "Delete a activity",
        "description" : "Delete activity if not already billed.",
        "operationId" : "deleteActivity",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "the uuid of the activity",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "if the activity was successfully deleted."
          },
          "400" : {
            "description" : "if the activity could not be deleted",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Activities" : {
      "get" : {
        "tags" : [ "Activities" ],
        "summary" : "Retrieve all activities filtered by performance date and/or scheduled date.",
        "description" : "Filter parameters: customerNumber, dateFrom, dateTo, scheduledFrom, scheduledTo, unbilledOnly",
        "operationId" : "activityList",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "query",
          "description" : "optional filter for customer number",
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        }, {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "specifies start of range for performance date",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "specifies end of range for performance date",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        }, {
          "name" : "scheduledFrom",
          "in" : "query",
          "description" : "specifies start of range for scheduled date",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2025-01-01"
        }, {
          "name" : "scheduledTo",
          "in" : "query",
          "description" : "specifies end of range for scheduled date",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2025-01-15"
        }, {
          "name" : "unbilledOnly",
          "in" : "query",
          "description" : "only query for unbilled activities. default = false",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Activity",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Activity"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "if customerNumber is specified AND the customer with the given customer number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/ContractAttachments" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve all contract attachments for a contract",
        "description" : "Loads a list of all contract attachments assigned to the given contract. With the documentId included the document itself can be fetched.",
        "operationId" : "getContractAttachments",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "list of contract attachments",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContractAttachment"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "upload a new contract attachment.",
        "description" : "create a new attachment for a contract. please provide binary data as base64.",
        "operationId" : "createContractAttachment",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the new attachment to create",
          "content" : {
            "*/*" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractAttachmentDocument"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created contract attachment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractAttachment"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract attachment could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/ContractAttachments/{documentId}" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve a contract attachment (binary).",
        "description" : "Retrieve the binary document of a contract attachment. The returned data is base64 encoded.",
        "operationId" : "downloadContractAttachment",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "documentId",
          "in" : "path",
          "description" : "the document id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "contract attachment binary",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BinaryDocument"
                }
              }
            }
          },
          "404" : {
            "description" : "if the document does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/EmailReceipients" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve all additional email receipients for a contract",
        "description" : "Retrieve all additional email receipients (with use case) for a contract",
        "operationId" : "additionalMailReceipientsByContract",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "list of email addresses",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/EmailAddress"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "add a new email address to a contract",
        "description" : "add a new additional email address for specific use case to contract",
        "operationId" : "addMailReceipient",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the email address to add, including info about use case",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EmailAddress"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created email address",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailAddress"
                }
              }
            }
          },
          "400" : {
            "description" : "if the email address could not be added",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/prices" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve prices for a contract/subscription",
        "description" : "Retrieve the currently valid prices for a contract/subscription by contract number. If date is supplied, the price calculation is done for the given date. If subscriptionItemStatus is supplied, only items with this status will be calculated.",
        "operationId" : "contractPrices",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "date",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "format" : "date"
          }
        }, {
          "name" : "subscriptionItemStatus",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "enum" : [ "ACTIVE", "UPDOWNGRADED", "CANCELED" ]
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "prices for this contract/subscriptipn",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PriceCalculationResultContract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the prices could not be retrieved",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/changeBillingAccount" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Change the owning account",
        "description" : "Change the owning account of the contract. Please take care and read hints in the GUI for this action!",
        "operationId" : "changeAccount",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "contract number wich identifies the contract",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 42
        }, {
          "name" : "targetAccountNo",
          "in" : "query",
          "description" : "account number that shall be assigned to the contract",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "contract with new account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the new account cannot be assigned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          },
          "404" : {
            "description" : "if the contract or accountnumber does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/CustomFields" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve custom fields of one contract",
        "description" : "Retrieve custom fields of one contract by its contract number",
        "operationId" : "getCustomFieldsByNumber",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Contracts" ],
        "summary" : "Set custom fields of one contract",
        "description" : "Set custom fields of one contract by its contract number. This operation replaces all custom fields! Use the PATCH method if you want to overwrite specific fields only.",
        "operationId" : "putCustomFieldsByNumber",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "all custom fields to set",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              },
              "examples" : {
                "set customFields" : {
                  "summary" : "Set custom fields",
                  "description" : "set customFields",
                  "value" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs - the key is the identifier (Bezeichner) from the field definition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "patch" : {
        "tags" : [ "Contracts" ],
        "summary" : "Patch custom fields of one contract",
        "description" : "Patch custom fields of one contract by its contract number. Only fields that are present in the request get overwritten. Use the PUT method if you want to overwrite all fields.",
        "operationId" : "patchCustomFieldsByNumber",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the custom fields to patch",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              },
              "examples" : {
                "patch customFields" : {
                  "summary" : "Patch custom fields",
                  "description" : "patch customFields",
                  "value" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs - the key is the identifier (Bezeichner) from the field definition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/activate" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Activate a contract",
        "description" : "Activate a contract by a given contract number",
        "operationId" : "activateContract",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "contract number wich identifies the contract",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 42
        }, {
          "name" : "sendOrderConfirmation",
          "in" : "query",
          "description" : "should the customer receive a order confirmation email",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "the activated Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be activated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          },
          "404" : {
            "description" : "if the contract with the given contract number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/cancel" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Cancel a contract",
        "description" : "Cancel a contract in status DRAFT",
        "operationId" : "cancelContract",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "the canceled Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be canceled",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/terminate" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Terminate a contract",
        "description" : "Send a contract termination request to terminate a contract",
        "operationId" : "terminateContract",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractTerminationRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "the terminated Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractTerminationResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be terminated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/interimBilling" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Create a interim invoice/creditnote for a contract",
        "description" : "Create invoice and/or creditnote for all pending and unbilled services. Invoice is immediatley sent to the customer (if enabled). Use parameters includeCreditNotes and includeInvoices to decide, which type of documents should be created. Default is to always create invoices.",
        "operationId" : "createInterimInvoice",
        "parameters" : [ {
          "name" : "includeInvoices",
          "in" : "query",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "includeCreditNotes",
          "in" : "query",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "the billed Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be billed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/smallUpgrade" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "small upgrade/downgrade",
        "description" : "Perform a small upgrade/downgrade on a contract",
        "operationId" : "smallUpgrade",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractSmallUpgradeRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "the changed Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be upgraded/downgraded",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/bigUpgrade" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "big upgrade/downgrade",
        "description" : "Perform a big upgrade/downgrade on a contract. you need to continue the process with activating the newly generated followup contract.",
        "operationId" : "bigUpgrade",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractBigUpgradeRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "the upgraded contract. contains reference to followup contract.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be upgraded/downgraded",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve all contracts",
        "description" : "Filter parameters: name",
        "operationId" : "contractList",
        "parameters" : [ {
          "name" : "name",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Contract"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Create a new contract",
        "description" : "Create a new contract for a customer. Adding a subscription is optional. The accountNumber is only required if multiple accounts for customer exist.",
        "operationId" : "createContract",
        "requestBody" : {
          "description" : "the contract to create, with optional subscription. accountNumber is only required if multiple accounts for customer exist.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Contract"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/ContractCommissionRules" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve all commission rules for a contract",
        "description" : "Loads a list of all commission rules assigned to the given contract.",
        "operationId" : "getContractCommissionRules",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "list of ContractCommissionRule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContractCommissionRuleVO"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Assign a commission rule to a contract",
        "description" : "Adds a new commission rule to a contract. For item related commission you only need to provide the item number in the item list.",
        "operationId" : "createContractCommissionRule",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the commission rule to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractCommissionRuleVO"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created commission rule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractCommissionRuleVO"
                }
              }
            }
          },
          "400" : {
            "description" : "if the commission rule could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve one contract",
        "description" : "Retrieve one contract by its contract number",
        "operationId" : "contractByNumber",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "one Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "404" : {
            "description" : "if the contract with the given contract number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Contracts" ],
        "summary" : "Update an existing contract",
        "description" : "update the contract for the given contractNumber. Editable attributes: couponCode, name, nextBilling, documentDeliveryMode, taxConfig, paymentMethod, extraTexts (setting to null not possible), duePeriod, dueUnit. All attributes will be overwritten! Please always provide the complete record.",
        "operationId" : "updateContract",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 150
        } ],
        "requestBody" : {
          "description" : "the contract to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Contract"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/ContractDiscounts" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve all discounts for a contract",
        "description" : "Loads a list of all contract discounts assigned to the given contract.",
        "operationId" : "getContractDiscounts",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "list of ContractDiscount",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContractDiscount"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Assign a discountconfig to a contract",
        "description" : "Adds a new discount configuration to a contract. Discount percent and validity can be set individually.",
        "operationId" : "createContractDiscount",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the discount to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractDiscount"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created ContractDiscount",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractDiscount"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract discount could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/ContractDiscounts/{discountUUID}" : {
      "put" : {
        "tags" : [ "Contracts" ],
        "summary" : "Update a discount assigned to a contract",
        "description" : "Overwrites all data of a assigned discount",
        "operationId" : "updateContractDiscount",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "discountUUID",
          "in" : "path",
          "description" : "UUID of the contract discount",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "the countract discount to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractDiscount"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated contract discount",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractDiscount"
                }
              }
            }
          },
          "400" : {
            "description" : "if the discount could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/ContractRecurringPaymentConfigs" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve all recurring payment configurations for a contract",
        "description" : "Loads a list of all recurring payment configs (Stripe, Adyen ...) assigned to the given contract.",
        "operationId" : "getContractRecurringPaymentConfigs",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "list of ContractRecurringPaymentConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContractRecurringPaymentConfig"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Contracts" ],
        "summary" : "Update a recurring payment config for a contract",
        "description" : "To activate a config, ensure that the payment service provider is enabled!",
        "operationId" : "updateContractRecurringPaymentConfig",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the recurring payment config to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractRecurringPaymentConfig"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated ContractRecurringPaymentConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractRecurringPaymentConfig"
                }
              }
            }
          },
          "400" : {
            "description" : "if the config could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Create a recurring payment config for a contract.",
        "description" : "Creates a new recurring payment config for psp (adyen, stripe ...) - Reference to payment at psp must be available. If you want to activate a config, the psp must be configured correctly. For contracts created in backoffice all configs are already available. Use PUT in that case.",
        "operationId" : "createContractRecurringPaymentConfig",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the config to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractRecurringPaymentConfig"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created ContractRecurringPaymentConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractRecurringPaymentConfig"
                }
              }
            }
          },
          "400" : {
            "description" : "if the recurring payment config could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/calculateItemPrice" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Calculate price of an item (non recurring context)",
        "description" : "Calculates the price of a given item in context of a contract incl. taxes, discounts etc. Can only be applied to oneTime billing items.",
        "operationId" : "calculateItemPrice",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractItemPriceCalculationRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "the result of the price calculation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PriceCalculationResultItem"
                }
              }
            }
          },
          "400" : {
            "description" : "if the price could not be retrieved",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/calculateTermination" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve a contract termination response",
        "description" : "Retrieve a contract termination response to calculate the possible termination of a contract.",
        "operationId" : "contractTerminationCalc",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "terminationDate",
          "in" : "query",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "the ContractTerminationResponse",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractTerminationResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "if the termination response could not be calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ContractSubscriptionTemplates/{uuid}/createContract" : {
      "post" : {
        "tags" : [ "ContractSubscriptionTemplates" ],
        "summary" : "Create a new contract based on a template",
        "description" : "Create a new contract using a contract subscription template. Optional: Activate contract immediately.",
        "operationId" : "createContractByTemplate",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "the uuid of the template to use (can be found in backoffice)",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          },
          "example" : "d35d1280-15a4-4577-8997-dfe4d358bcb0"
        } ],
        "requestBody" : {
          "description" : "create options for new contract",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractFromTemplate"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ContractSubscriptionTemplates" : {
      "get" : {
        "tags" : [ "ContractSubscriptionTemplates" ],
        "summary" : "Retrieve all contract templates",
        "operationId" : "contractTemplateList",
        "responses" : {
          "default" : {
            "description" : "list of ContractSubscriptionTemplate",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContractSubscriptionTemplate"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Customers/{customerNumber}/EmailReceipients" : {
      "get" : {
        "tags" : [ "Customers" ],
        "summary" : "Retrieve all additional email receipients for a customer",
        "description" : "Retrieve all additional email receipients (with use case) for a customer by the customer number",
        "operationId" : "additionalMailReceipientsByCustomer",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of email addresses",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/EmailAddress"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Customers" ],
        "summary" : "add a new email address to customer",
        "description" : "add a new additional email address for specific use case to customer",
        "operationId" : "addMailReceipient_1",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "requestBody" : {
          "description" : "the email address to add, including info about use case",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EmailAddress"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created email address",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailAddress"
                }
              }
            }
          },
          "400" : {
            "description" : "if the email address could not be added",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Customers/{customerNumber}/SepaDebitMandates" : {
      "get" : {
        "tags" : [ "Customers" ],
        "summary" : "Retrieve all sepa debit mandates for a customer",
        "description" : "Retrieve all sepa debit mandates for a customer by the customer number",
        "operationId" : "sepaDebitMandatesByCustomer",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of sepa debit mandates",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/SepaDebitMandate"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Customers" ],
        "summary" : "Update a sepa debit mandate",
        "description" : "update sepa debit mandate for customer",
        "operationId" : "updateSepaDebitMandate",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "requestBody" : {
          "description" : "the sepa mandate to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SepaDebitMandate"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated mandate",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SepaDebitMandate"
                }
              }
            }
          },
          "400" : {
            "description" : "if the mandate could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Customers" ],
        "summary" : "Create a new sepa debit mandate",
        "description" : "add a new sepa debit mandate to a customer",
        "operationId" : "createSepaDebitMandate",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "requestBody" : {
          "description" : "the sepa mandate to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SepaDebitMandate"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created mandate",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SepaDebitMandate"
                }
              }
            }
          },
          "400" : {
            "description" : "if the mandate could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Customers/{customerNumber}/CustomFields" : {
      "get" : {
        "tags" : [ "Customers" ],
        "summary" : "Retrieve custom fields of one customer",
        "description" : "Retrieve custom fields of one customer by its customer number",
        "operationId" : "getCustomFieldsByNumber_1",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Customers" ],
        "summary" : "Set custom fields of one customer",
        "description" : "Set custom fields of one customer by its customer number. This operation replaces all custom fields! Use the PATCH method if you want to overwrite specific fields only.",
        "operationId" : "putCustomFieldsByNumber_1",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "requestBody" : {
          "description" : "all custom fields to set",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              },
              "examples" : {
                "set customFields" : {
                  "summary" : "Set custom fields",
                  "description" : "set customFields",
                  "value" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs - the key is the identifier (Bezeichner) from the field definition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "patch" : {
        "tags" : [ "Customers" ],
        "summary" : "Patch custom fields of one customer",
        "description" : "Patch custom fields of one customer by its customer number. Only fields that are present in the request get overwritten. Use the PUT method if you want to overwrite all fields.",
        "operationId" : "patchCustomFieldsByNumber_1",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "requestBody" : {
          "description" : "the custom fields to patch",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              },
              "examples" : {
                "patch customFields" : {
                  "summary" : "Patch custom fields",
                  "description" : "patch customFields",
                  "value" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs - the key is the identifier (Bezeichner) from the field definition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Customers" : {
      "get" : {
        "tags" : [ "Customers" ],
        "summary" : "Retrieve customers",
        "description" : "Filter parameters: email, firstName, lastName, companyName",
        "operationId" : "customerList",
        "parameters" : [ {
          "name" : "email",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "firstName",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lastName",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "companyName",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Customer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Customer"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Customers" ],
        "summary" : "Create a new customer",
        "operationId" : "createCustomer",
        "requestBody" : {
          "description" : "the customer to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Customer"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created Customer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Customer"
                }
              }
            }
          },
          "400" : {
            "description" : "if the customer could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Customers/{customerNumber}" : {
      "get" : {
        "tags" : [ "Customers" ],
        "summary" : "Retrieve one customer",
        "description" : "Retrieve one customer by its customer number",
        "operationId" : "customerByNumber",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "responses" : {
          "default" : {
            "description" : "one customer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Customer"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Customers" ],
        "summary" : "Update an existing customer",
        "description" : "update the customer data for the given customerNumber. All attributes will be overwritten! Please always provide the complete record.",
        "operationId" : "updateCustomer",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "requestBody" : {
          "description" : "the customer to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Customer"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated Customer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Customer"
                }
              }
            }
          },
          "400" : {
            "description" : "if the customer could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Customers/{customerNumber}/Contracts" : {
      "get" : {
        "tags" : [ "Customers", "Contracts" ],
        "summary" : "Retrieve all contracts for a customer",
        "description" : "Retrieve all contracts for a customer by the customer number",
        "operationId" : "contractsByCustomer",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Contract"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Customers/{customerNumber}/Accounts" : {
      "get" : {
        "tags" : [ "Customers", "Accounts" ],
        "summary" : "Retrieve all accounts for a customer",
        "description" : "Retrieve all accounts for a customer by the customer number",
        "operationId" : "accountsByCustomer",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "path",
          "description" : "the customer number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Account"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CouponConfigs/redeemCouponCode" : {
      "post" : {
        "tags" : [ "Discounts" ],
        "summary" : "Redeem a coupon code",
        "description" : "Redeem a coupon code (mark as used). Only possible for discount configs with onetime use.",
        "operationId" : "redeemCouponCode",
        "requestBody" : {
          "description" : "the coupon code to invalidate",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CouponCodeRedemptionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "coupon code after redemption",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CouponCode"
                }
              }
            }
          },
          "400" : {
            "description" : "if the redemption failed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/DiscountConfigs" : {
      "get" : {
        "tags" : [ "Discounts" ],
        "summary" : "Retrieve all discount configs",
        "operationId" : "discountConfigList",
        "responses" : {
          "default" : {
            "description" : "list of DiscountConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/DiscountConfig"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Discounts" ],
        "summary" : "Create a new discount config",
        "description" : "Creates a new discount configuration. Project assignment is optional.",
        "operationId" : "createDiscountConfig",
        "requestBody" : {
          "description" : "the discountconfig to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DiscountConfig"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created DiscountConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DiscountConfig"
                }
              }
            }
          },
          "400" : {
            "description" : "if the discountconfig could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CouponConfigs" : {
      "get" : {
        "tags" : [ "Discounts" ],
        "summary" : "Retrieve all coupon configs",
        "operationId" : "couponConfigList",
        "responses" : {
          "default" : {
            "description" : "list of CouponConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/CouponConfig"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Discounts" ],
        "summary" : "Create a new coupon config",
        "description" : "Creates a new coupon configuration. Provide coupon codes as list via couponCodes attribute.",
        "operationId" : "createCouponConfig",
        "requestBody" : {
          "description" : "the coupon config to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CouponConfig"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created CouponConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CouponConfig"
                }
              }
            }
          },
          "400" : {
            "description" : "if the couponconfig could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/CouponConfigs/validateCouponCode" : {
      "post" : {
        "tags" : [ "Discounts" ],
        "summary" : "Validate a coupon code",
        "description" : "Validates a coupon code. If valid, the CouponCode object, CouponConfig and DiscountConfig will be returned.",
        "operationId" : "validateCouponCode",
        "requestBody" : {
          "description" : "the coupon code to check",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CouponCodeValidationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "result of the coupon validation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CouponCodeValidationResult"
                }
              }
            }
          },
          "400" : {
            "description" : "if the validation failed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Invoices/{invoiceNumber}/Rebill" : {
      "post" : {
        "tags" : [ "Invoices" ],
        "summary" : "Rebill an invoice",
        "description" : "Create a new invoice from a canceled invoice using the current customer address data and prices.",
        "operationId" : "invoiceRebill",
        "parameters" : [ {
          "name" : "invoiceNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "interimBilling",
          "in" : "query",
          "description" : "should a interim billing be triggered immediately to send out the invoice? false: invoice will be sent at next billing date of contract.",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "if the invoice with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Invoices/{invoiceNumber}/Document" : {
      "get" : {
        "tags" : [ "Invoices" ],
        "summary" : "Retrieve the invoice PDF document",
        "description" : "Retrieve the invoice PDF document for a given invoice number. The returned data is base64 encoded.",
        "operationId" : "invoiceDocument",
        "parameters" : [ {
          "name" : "invoiceNumber",
          "in" : "path",
          "description" : "the invoice number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "RE3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one InvoiceDocument",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvoiceDocument"
                }
              }
            }
          },
          "404" : {
            "description" : "if the invoice with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Invoices" : {
      "get" : {
        "tags" : [ "Invoices" ],
        "summary" : "Retrieve invoices",
        "description" : "Filter parameters: customerNumber, contractNumber, dateFrom, dateTo, currency, unpaidOnly",
        "operationId" : "invoiceList",
        "parameters" : [ {
          "name" : "customerNumber",
          "in" : "query",
          "description" : "optional filter for customer number",
          "schema" : {
            "type" : "string"
          },
          "example" : "K1234"
        }, {
          "name" : "contractNumber",
          "in" : "query",
          "description" : "optional filter for contract number",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 12
        }, {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "specifies the start within the range of the returned invoices. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "specifies the end within the range of the returned invoices. optional",
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        }, {
          "name" : "currency",
          "in" : "query",
          "description" : "optional filter for currency",
          "schema" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "example" : "EUR"
        }, {
          "name" : "documentDeliveryMode",
          "in" : "query",
          "description" : "optional filter for document delivery mode",
          "schema" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "example" : "EMAIL"
        }, {
          "name" : "unpaidOnly",
          "in" : "query",
          "description" : "only show open (not fully paid) invoices. default = false",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "extendedData",
          "in" : "query",
          "description" : "load additional data with invoice (payitems, account etc.) Caution: increased execution time. default = false",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Invoice",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Invoice"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "if customerNumber is specified AND the customer with the given customer number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Invoices/{invoiceNumber}" : {
      "get" : {
        "tags" : [ "Invoices" ],
        "summary" : "Retrieve one invoice",
        "description" : "Retrieve one invoice by its invoice number",
        "operationId" : "invoiceByNumber",
        "parameters" : [ {
          "name" : "invoiceNumber",
          "in" : "path",
          "description" : "the invoice number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "RE3456"
        } ],
        "responses" : {
          "default" : {
            "description" : "one Invoice",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Invoice"
                }
              }
            }
          },
          "404" : {
            "description" : "if the invoice with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Invoices/{invoiceNumber}/Pay" : {
      "post" : {
        "tags" : [ "Invoices" ],
        "summary" : "Mark invoice as paid",
        "description" : "Send a request to mark a invoice as paid (full or partially)",
        "operationId" : "invoicePay",
        "parameters" : [ {
          "name" : "invoiceNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/InvoicePayRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "the full or partially paid invoice (metadata)",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvoiceMetadata"
                }
              }
            }
          },
          "404" : {
            "description" : "if the invoice with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Invoices/{invoiceNumber}/Cancel" : {
      "post" : {
        "tags" : [ "Invoices" ],
        "summary" : "Cancel an invoice",
        "description" : "Cancelation of an invoice. Required for invoice rebilling.",
        "operationId" : "invoiceCancel",
        "parameters" : [ {
          "name" : "invoiceNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sendMailToCustomer",
          "in" : "query",
          "description" : "should the customer receive an email about the cancelation including the invoice correction?",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "useInvoiceAddress",
          "in" : "query",
          "description" : "for invoice correction use old address from invoice for receipient instead of current customer address.",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "the invoice correction for the canceled invoice",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvoiceCorrection"
                }
              }
            }
          },
          "404" : {
            "description" : "if the invoice with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Invoices/{invoiceNumber}/Reopen" : {
      "post" : {
        "tags" : [ "Invoices" ],
        "summary" : "Set invoice to unpaid",
        "description" : "Set an already paid invoice to unpaid. The customers account will be debited by default. use parameter 'skipDebit' to skip this step.",
        "operationId" : "invoiceReopen",
        "parameters" : [ {
          "name" : "invoiceNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "skipDebit",
          "in" : "query",
          "description" : "do not create a debit entry on the customer account",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "if the invoice with the given invoice number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Items" : {
      "get" : {
        "tags" : [ "Items" ],
        "summary" : "Retrieve all items",
        "description" : "Retrieve all items.",
        "operationId" : "itemList",
        "responses" : {
          "default" : {
            "description" : "list of Item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Items" ],
        "summary" : "Create a new Item",
        "description" : "Create a new Item with optional Prices",
        "operationId" : "itemCreate",
        "parameters" : [ {
          "name" : "itemCategoryName",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "the Item object with optional Prices",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Item"
              },
              "examples" : {
                "Example item without any price. Usefuf if the item is only used with custom prices." : {
                  "summary" : "Item without price",
                  "description" : "Example item without any price. Usefuf if the item is only used with custom prices.",
                  "value" : {
                    "itemNumber" : "ITEM 001",
                    "name" : "Example item",
                    "description" : "Item without price",
                    "unit" : "HOUR"
                  }
                },
                "Example item with just one simple price. This is the regular use." : {
                  "summary" : "Item with one price",
                  "description" : "Example item with just one simple price. This is the regular use.",
                  "value" : {
                    "itemNumber" : "ITEM 002",
                    "name" : "Example item",
                    "description" : "Example item with simple price",
                    "unit" : "MONTH",
                    "prices" : [ {
                      "cost" : 123.4567,
                      "currency" : "EUR"
                    } ]
                  }
                },
                "Example item with two prices. One price is more complex: it has a 'minimum quantity' and a 'valid from'-date." : {
                  "summary" : "Item with complex prices",
                  "description" : "Example item with two prices. One price is more complex: it has a 'minimum quantity' and a 'valid from'-date.",
                  "value" : {
                    "itemNumber" : "ITEM 003",
                    "name" : "Example item",
                    "description" : "Example item with complex prices",
                    "unit" : "MONTH",
                    "prices" : [ {
                      "cost" : 123.4567,
                      "currency" : "EUR"
                    }, {
                      "cost" : 100.0,
                      "currency" : "EUR",
                      "validFrom" : "2029-10-15",
                      "minimumQuantity" : 100
                    } ]
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "the newly created Item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Item"
                }
              }
            }
          },
          "400" : {
            "description" : "if the Item could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Items/{itemNumber}/CustomFields" : {
      "get" : {
        "tags" : [ "Items" ],
        "summary" : "Retrieve custom fields of one item",
        "description" : "Retrieve custom fields of one item by its item number",
        "operationId" : "getCustomFieldsByNumber_2",
        "parameters" : [ {
          "name" : "itemNumber",
          "in" : "path",
          "description" : "the item number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "ABC123"
        } ],
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Items" ],
        "summary" : "Set custom fields of one item",
        "description" : "Set custom fields of one item by its item number. This operation replaces all custom fields! Use the PATCH method if you want to overwrite specific fields only.",
        "operationId" : "putCustomFieldsByNumber_2",
        "parameters" : [ {
          "name" : "itemNumber",
          "in" : "path",
          "description" : "the item number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "ABC123"
        } ],
        "requestBody" : {
          "description" : "all custom fields to set",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              },
              "examples" : {
                "set customFields" : {
                  "summary" : "Set custom fields",
                  "description" : "set customFields",
                  "value" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs - the key is the identifier (Bezeichner) from the field definition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "patch" : {
        "tags" : [ "Items" ],
        "summary" : "Patch custom fields of one item",
        "description" : "Patch custom fields of one item by its itemnumber. Only fields that are present in the request get overwritten. Use the PUT method if you want to overwrite all fields.",
        "operationId" : "patchCustomFieldsByNumber_2",
        "parameters" : [ {
          "name" : "itemNumber",
          "in" : "path",
          "description" : "the item number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "ABC123"
        } ],
        "requestBody" : {
          "description" : "the custom fields to patch",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              },
              "examples" : {
                "patch customFields" : {
                  "summary" : "Patch custom fields",
                  "description" : "patch customFields",
                  "value" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "object with key/value pairs - the key is the identifier (Bezeichner) from the field definition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "title" : "customFields object",
                  "type" : "object",
                  "example" : {
                    "exampleTextField" : "Content of text field",
                    "exampleDateField" : "2020-09-23",
                    "exampleBoolField" : true
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Items/{itemNumber}/Prices/{priceUUID}" : {
      "put" : {
        "tags" : [ "Items" ],
        "summary" : "Update one price of an item",
        "description" : "updates a single price of an item. All attributes will be overwritten! Please always provide the complete record.",
        "operationId" : "updateItemPrice",
        "parameters" : [ {
          "name" : "itemNumber",
          "in" : "path",
          "description" : "the item number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "I001"
        }, {
          "name" : "priceUUID",
          "in" : "path",
          "description" : "the UUID of the price",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "description" : "the price to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Price"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Item"
                }
              }
            }
          },
          "400" : {
            "description" : "if the price could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ItemCategories" : {
      "get" : {
        "tags" : [ "Items" ],
        "summary" : "Retrieve all item categories",
        "description" : "Retrieve all item categories.",
        "operationId" : "itemCategoryList",
        "responses" : {
          "default" : {
            "description" : "list of ItemCategory",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ItemCategory"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Items/{itemNumber}" : {
      "get" : {
        "tags" : [ "Items" ],
        "summary" : "Retrieve an item",
        "description" : "Retrieve an item.",
        "operationId" : "itemByNumber",
        "parameters" : [ {
          "name" : "itemNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "one Item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Item"
                }
              }
            }
          },
          "404" : {
            "description" : "if the item with the given item number does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Items" ],
        "summary" : "Update an existing item",
        "description" : "update the item and its prices. All attributes will be overwritten! Please always provide the complete record.",
        "operationId" : "updateItem",
        "parameters" : [ {
          "name" : "itemNumber",
          "in" : "path",
          "description" : "the item number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "I001"
        }, {
          "name" : "itemCategoryName",
          "in" : "query",
          "description" : "only required if you want to change the item category",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "the item to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Item"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the updated item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Item"
                }
              }
            }
          },
          "400" : {
            "description" : "if the item could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Orders" : {
      "get" : {
        "tags" : [ "Orders" ],
        "summary" : "Retrieve orders created by signup pages",
        "description" : "Filter parameters: email, firstName, lastName, companyName",
        "operationId" : "orderList",
        "parameters" : [ {
          "name" : "email",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "firstName",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lastName",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "companyName",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of Order",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Order"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Orders" ],
        "summary" : "Create a new order",
        "description" : "Saves a new order based on order template. When using orderItems at least itemnumber and quantity is required. The item must be assigned to the contract template.",
        "operationId" : "createOrder",
        "requestBody" : {
          "description" : "the order to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Order"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created OrderCustomer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Order"
                }
              }
            }
          },
          "400" : {
            "description" : "if the order could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/OrderTemplates" : {
      "get" : {
        "tags" : [ "Orders" ],
        "summary" : "Retrieve signup pages",
        "description" : "Full list of order templates",
        "operationId" : "orderTemplateList",
        "responses" : {
          "default" : {
            "description" : "list of OrderTemplates",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/OrderTemplate"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Orders/{orderNumber}" : {
      "get" : {
        "tags" : [ "Orders" ],
        "summary" : "Retrieve one order",
        "description" : "Retrieve one order by its order number",
        "operationId" : "orderByNumber",
        "parameters" : [ {
          "name" : "orderNumber",
          "in" : "path",
          "description" : "the order number",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "B1000"
        } ],
        "responses" : {
          "default" : {
            "description" : "one order",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Order"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/OrderTemplates/{pageId}/calculatePrices" : {
      "post" : {
        "tags" : [ "Orders" ],
        "summary" : "Calculate prices for a signup page",
        "description" : "Calculates all prices of items included in an order template in context of a new customer incl. taxes, discounts, couponcodes etc.",
        "operationId" : "calculateOrderTemplatePrices",
        "parameters" : [ {
          "name" : "pageId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OrderTemplatePriceCalculationRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "the result of the price calculation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PriceCalculationResultOrder"
                }
              }
            }
          },
          "400" : {
            "description" : "if the prices could not be retrieved",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Orders/{orderNumber}/createCustomer" : {
      "post" : {
        "tags" : [ "Orders" ],
        "summary" : "Create a customer from order",
        "description" : "Create a new customer based on data from order.",
        "operationId" : "createCustomerByOrder",
        "parameters" : [ {
          "name" : "orderNumber",
          "in" : "path",
          "description" : "the ordernumber to create a new customer for",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "B1000"
        } ],
        "responses" : {
          "default" : {
            "description" : "the newly created customer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Customer"
                }
              }
            }
          },
          "400" : {
            "description" : "if the customer could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Orders/{orderNumber}/createContract" : {
      "post" : {
        "tags" : [ "Orders" ],
        "summary" : "Create a contract from order",
        "description" : "Create a new contract from order. requires the customer to be already created.",
        "operationId" : "createContractByOrder",
        "parameters" : [ {
          "name" : "orderNumber",
          "in" : "path",
          "description" : "the ordernumber to create a new contract for",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "B1000"
        } ],
        "responses" : {
          "default" : {
            "description" : "the newly created contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the contract could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ReportCustomer" : {
      "post" : {
        "tags" : [ "Reports" ],
        "summary" : "Create a new customer report",
        "description" : "Creates a report for all existing customers. This is an asynchronous call. You have to poll for the job results.",
        "operationId" : "createCustomerReport",
        "responses" : {
          "default" : {
            "description" : "meta data of the newly created report. ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExportResult"
                }
              }
            }
          },
          "400" : {
            "description" : "if the report could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ReportContracts" : {
      "post" : {
        "tags" : [ "Reports" ],
        "summary" : "Create a new contract report",
        "description" : "Creates a report for all contracts with issue date in the given range. This is an asynchronous call. You have to poll for the job results.",
        "operationId" : "createContractReport",
        "parameters" : [ {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "start issue date of contract.",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "end issue date of contract.",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        } ],
        "responses" : {
          "default" : {
            "description" : "meta data of the newly created report. ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExportResult"
                }
              }
            }
          },
          "400" : {
            "description" : "if the report could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ReportMrr" : {
      "post" : {
        "tags" : [ "Reports" ],
        "summary" : "Create a new MRR report",
        "description" : "Creates a mrr preview report. This is an asynchronous call. You have to poll for the job results.",
        "operationId" : "createMrrReport",
        "parameters" : [ {
          "name" : "dateTo",
          "in" : "query",
          "description" : "end date for preview",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        }, {
          "name" : "currency",
          "in" : "query",
          "description" : "currency",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "example" : "EUR"
        }, {
          "name" : "contractBased",
          "in" : "query",
          "description" : "output per contract",
          "schema" : {
            "type" : "boolean"
          },
          "example" : true
        }, {
          "name" : "includeDraft",
          "in" : "query",
          "description" : "include draft contracts",
          "schema" : {
            "type" : "boolean"
          },
          "example" : true
        }, {
          "name" : "includeActivities",
          "in" : "query",
          "description" : "include single activities",
          "schema" : {
            "type" : "boolean"
          },
          "example" : true
        } ],
        "responses" : {
          "default" : {
            "description" : "meta data of the newly created report. ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExportResult"
                }
              }
            }
          },
          "400" : {
            "description" : "if the report could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ReportInvoices" : {
      "post" : {
        "tags" : [ "Reports" ],
        "summary" : "Create a new invoice report",
        "description" : "Creates a report for all invoices created within the given range. This is an asynchronous call. You have to poll for the job results.",
        "operationId" : "createInvoiceReport",
        "parameters" : [ {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "start date.",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-01-01"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "end date",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date"
          },
          "example" : "2020-02-28"
        }, {
          "name" : "includeInvoices",
          "in" : "query",
          "description" : "include invoices",
          "schema" : {
            "type" : "boolean"
          },
          "example" : true
        }, {
          "name" : "includeInvoiceCorrections",
          "in" : "query",
          "description" : "include invoice corrections",
          "schema" : {
            "type" : "boolean"
          },
          "example" : true
        } ],
        "responses" : {
          "default" : {
            "description" : "meta data of the newly created report. ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExportResult"
                }
              }
            }
          },
          "400" : {
            "description" : "if the report could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ExportResults" : {
      "get" : {
        "tags" : [ "Reports" ],
        "summary" : "Retrieve all reports (meta data).",
        "operationId" : "exportResultList",
        "responses" : {
          "default" : {
            "description" : "list of export results",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ExportResult"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ExportResults/{uuid}" : {
      "get" : {
        "tags" : [ "Reports" ],
        "summary" : "Retrieve a single export result",
        "operationId" : "getExportResult",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "uuid of the export result",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "a single export result"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/ExportResults/{uuid}/Document" : {
      "get" : {
        "tags" : [ "Reports" ],
        "summary" : "Retrieve the binary document for a export result. the data is returned in base64 encoding.",
        "operationId" : "getExportResultDocument",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "uuid of the export result",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "report binary",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BinaryDocument"
                }
              }
            }
          },
          "404" : {
            "description" : "if the document does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/Subscription" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve the subscription for a contract",
        "description" : "Retrieve the subscription for a contract by the contract number.",
        "operationId" : "contractSubscription",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "responses" : {
          "default" : {
            "description" : "one Subscription",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Subscription"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Contracts" ],
        "summary" : "Update a subscription for a contract",
        "description" : "Overwrites properties of a subscription, if allowed. SubscriptionItems are not processed here! Use endpoint for subscription item update.",
        "operationId" : "updateSubscription",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the subscription to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Subscription"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the Contract with the updated Subscription",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the subscription could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Create a new subscription for a contract",
        "description" : "Create a new subscription for a existing contract without subscription.",
        "operationId" : "createSubscription",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the subscription to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Subscription"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the Contract with the newly created Subscription",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the subscription could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/Subscription/SubscriptionItems/{subscriptionItemUUID}" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieve a subscriptionItem for a contract",
        "description" : "Retrieve one subscriptionItem for a contract by its UUID.",
        "operationId" : "contractSubscriptionItem",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "subscriptionItemUUID",
          "in" : "path",
          "description" : "UUID of the subscriptionItem",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "one SubscriptionItem",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriptionItem"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Contracts" ],
        "summary" : "Update a subscription item for a contracts subscription",
        "description" : "Overwrites all data of a subscription item",
        "operationId" : "updateSubscriptionItem",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "subscriptionItemUUID",
          "in" : "path",
          "description" : "UUID of the subscription item",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "the subscriptionItem to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubscriptionItem"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the Contract with the updated SubscriptionItem",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the subscriptionItem could not be updated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/Subscription/SubscriptionItems/{subscriptionItemUUID}/customPrices" : {
      "get" : {
        "tags" : [ "Contracts" ],
        "summary" : "Retrieves custom prices for a subscriptionItem",
        "description" : "Retrieves custom prices for a subscriptionItem belonging to a contract.",
        "operationId" : "contractSubscriptionItemPrices",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "subscriptionItemUUID",
          "in" : "path",
          "description" : "UUID of the subscriptionItem",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "list of custom prices",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Price"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Create a new subscription item price for a contracts subscription",
        "description" : "Add a new subscriptionItem price (custom price) to a contract with existing subscription.",
        "operationId" : "createSubscriptionItemPrice",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        }, {
          "name" : "subscriptionItemUUID",
          "in" : "path",
          "description" : "UUID of the subscription item",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "the price to create. Only POSITVE values allowed for cost!",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Price"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "list of all custom prices",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Price"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/Subscription/SubscriptionItems" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Create a new subscription item for a contracts subscription",
        "description" : "Add a new subscriptionItem to a contract with existing subscription.",
        "operationId" : "createSubscriptionItem",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "description" : "the contract number",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "description" : "the subscriptionItem to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubscriptionItem"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the Contract with the newly created SubscriptionItem",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "if the subscriptionItem could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Contracts/{contractNumber}/Subscription/SubscriptionItems/{subscriptionItemUUID}/calculatePrice" : {
      "post" : {
        "tags" : [ "Contracts" ],
        "summary" : "Calculate price of a subscription item",
        "description" : "Calculates the price of a subscription item incl. taxes, discounts etc.",
        "operationId" : "calculateSubscriptionItemPrice",
        "parameters" : [ {
          "name" : "contractNumber",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "subscriptionItemUUID",
          "in" : "path",
          "description" : "UUID of the subscription item",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubscriptionItemPriceCalculationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the result of the price calculation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PriceCalculationResultItem"
                }
              }
            }
          },
          "400" : {
            "description" : "if the price could not be retrieved",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/UserLogins/{userLoginName}/sessionToken" : {
      "get" : {
        "tags" : [ "UserLogins" ],
        "summary" : "Create SessionToken for UserLogin",
        "description" : "Create and get a SessionToken (password-less customercenter-login) for existing UserLogin",
        "operationId" : "userLoginSessionTokenGet",
        "parameters" : [ {
          "name" : "userLoginName",
          "in" : "path",
          "description" : "the login name",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "dummyUsername"
        } ],
        "responses" : {
          "default" : {
            "description" : "the SessionToken",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserLoginSessionToken"
                }
              }
            }
          },
          "400" : {
            "description" : "if the SessionToken could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/UserLogins/{userLoginName}/activate" : {
      "post" : {
        "tags" : [ "UserLogins" ],
        "summary" : "Activate UserLogin",
        "description" : "Activate the already existing UserLogin",
        "operationId" : "userLoginActivatePost",
        "parameters" : [ {
          "name" : "userLoginName",
          "in" : "path",
          "description" : "the login name",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "dummyUsername"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserLoginActionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the activated UserLogin",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserLogin"
                }
              }
            }
          },
          "400" : {
            "description" : "if the UserLogin could not be activated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/UserLogins/{userLoginName}/lock" : {
      "post" : {
        "tags" : [ "UserLogins" ],
        "summary" : "Lock UserLogin",
        "description" : "Lock the already existing UserLogin",
        "operationId" : "userLoginLockPost",
        "parameters" : [ {
          "name" : "userLoginName",
          "in" : "path",
          "description" : "the login name",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "dummyUsername"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserLoginActionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the locked UserLogin",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserLogin"
                }
              }
            }
          },
          "400" : {
            "description" : "if the UserLogin could not be locked",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/UserLogins/{userLoginName}/password" : {
      "post" : {
        "tags" : [ "UserLogins" ],
        "summary" : "Change password of UserLogin",
        "description" : "Change the password of already existing UserLogin",
        "operationId" : "userLoginPasswordPost",
        "parameters" : [ {
          "name" : "userLoginName",
          "in" : "path",
          "description" : "the login name",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "dummyUsername"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserLoginActionPasswordRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the UserLogin",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserLogin"
                }
              }
            }
          },
          "400" : {
            "description" : "if the password could not be changed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/UserLogins" : {
      "post" : {
        "tags" : [ "UserLogins" ],
        "summary" : "Create new UserLogin",
        "description" : "Create new UserLogin for a existing Customer",
        "operationId" : "userLoginCreatePost",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserLoginCreateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created UserLogin",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserLogin"
                }
              }
            }
          },
          "400" : {
            "description" : "if the UserLogin could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/UserLogins/{userLoginName}" : {
      "get" : {
        "tags" : [ "UserLogins" ],
        "summary" : "Retrieve one UserLogin",
        "description" : "Retrieve one UserLogin by its login name",
        "operationId" : "userLoginGet",
        "parameters" : [ {
          "name" : "userLoginName",
          "in" : "path",
          "description" : "the login name",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "dummyUsername"
        } ],
        "responses" : {
          "default" : {
            "description" : "one UserLogin",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserLogin"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Webhooks" : {
      "get" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Retrieve all webhook configs",
        "operationId" : "webhookConfigList",
        "responses" : {
          "default" : {
            "description" : "list of webhook configs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/WebhookConfig"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      },
      "post" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Create a new webhook config",
        "description" : "Creates a new webhook configuration.",
        "operationId" : "createWebhookConfig",
        "requestBody" : {
          "description" : "the webhook config to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebhookConfig"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "default" : {
            "description" : "the newly created webhook config",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookConfig"
                }
              }
            }
          },
          "400" : {
            "description" : "if the webhook could not be created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/WebhookJobs/{uuid}" : {
      "get" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Retrieve a single webhook notification",
        "operationId" : "getWebhookJob",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "uuid of the webhook job",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "a single webhook notification"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    },
    "/api/v1/Webhooks/{uuid}/disable" : {
      "post" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Disable a webhook config",
        "description" : "Disable a webhook config. Use for unsubscribing from a webhook.",
        "operationId" : "disableWebhook",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "uuid of the webhook",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          },
          "example" : "bd14451f-a729-437a-9711-90b87bc683a0"
        } ],
        "responses" : {
          "default" : {
            "description" : "the disabled webhook config",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookConfig"
                }
              }
            }
          },
          "400" : {
            "description" : "if the webhook could not be disabled",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RestError"
                }
              }
            }
          },
          "404" : {
            "description" : "if the webhook with the given uuid does not exist"
          }
        },
        "security" : [ {
          "api-key" : [ ]
        } ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "InvoiceCorrectionDocument" : {
        "type" : "object",
        "properties" : {
          "document" : {
            "type" : "string",
            "format" : "byte"
          }
        }
      },
      "CreditNoteCorrection" : {
        "type" : "object",
        "properties" : {
          "accountNumber" : {
            "type" : "string"
          },
          "contractNumber" : {
            "type" : "string"
          },
          "number" : {
            "type" : "string"
          },
          "date" : {
            "type" : "string",
            "format" : "date"
          },
          "customerNumber" : {
            "type" : "string"
          },
          "customerTitle" : {
            "type" : "string"
          },
          "customerName1" : {
            "type" : "string"
          },
          "customerName2" : {
            "type" : "string"
          },
          "addressLine1" : {
            "type" : "string"
          },
          "addressLine2" : {
            "type" : "string"
          },
          "addressLine3" : {
            "type" : "string"
          },
          "zipCode" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountGross" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "documentDeliveryMode" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "contractNumbers" : {
            "type" : "string"
          },
          "referencedCreditNoteNumber" : {
            "type" : "string"
          },
          "payItems" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/CreditNoteCorrectionPayItem"
            }
          }
        }
      },
      "CreditNoteCorrectionPayItem" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number"
          },
          "taxRatePercent" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountNetSum" : {
            "type" : "number"
          },
          "itemNumber" : {
            "type" : "string"
          },
          "itemName" : {
            "type" : "string"
          },
          "itemUnit" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "financialAccountRevenue" : {
            "type" : "string"
          },
          "financialAccountTax" : {
            "type" : "string"
          },
          "discountPercent" : {
            "type" : "number"
          },
          "discountApplied" : {
            "type" : "boolean"
          },
          "performanceDateStart" : {
            "type" : "string",
            "format" : "date"
          },
          "performanceDateEnd" : {
            "type" : "string",
            "format" : "date"
          },
          "financialAccountGross" : {
            "type" : "boolean"
          },
          "contractNumber" : {
            "type" : "string"
          }
        }
      },
      "CreditNoteCorrectionDocument" : {
        "type" : "object",
        "properties" : {
          "document" : {
            "type" : "string",
            "format" : "byte"
          }
        }
      },
      "InvoiceCorrection" : {
        "type" : "object",
        "properties" : {
          "accountNumber" : {
            "type" : "string"
          },
          "contractNumber" : {
            "type" : "string"
          },
          "number" : {
            "type" : "string"
          },
          "date" : {
            "type" : "string",
            "format" : "date"
          },
          "customerNumber" : {
            "type" : "string"
          },
          "customerTitle" : {
            "type" : "string"
          },
          "customerName1" : {
            "type" : "string"
          },
          "customerName2" : {
            "type" : "string"
          },
          "addressLine1" : {
            "type" : "string"
          },
          "addressLine2" : {
            "type" : "string"
          },
          "addressLine3" : {
            "type" : "string"
          },
          "zipCode" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountGross" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "documentDeliveryMode" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "contractNumbers" : {
            "type" : "string"
          },
          "referencedInvoiceNumber" : {
            "type" : "string"
          },
          "payItems" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InvoiceCorrectionPayItem"
            }
          }
        }
      },
      "InvoiceCorrectionPayItem" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number"
          },
          "taxRatePercent" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountNetSum" : {
            "type" : "number"
          },
          "itemNumber" : {
            "type" : "string"
          },
          "itemName" : {
            "type" : "string"
          },
          "itemUnit" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "financialAccountRevenue" : {
            "type" : "string"
          },
          "financialAccountTax" : {
            "type" : "string"
          },
          "discountPercent" : {
            "type" : "number"
          },
          "discountApplied" : {
            "type" : "boolean"
          },
          "performanceDateStart" : {
            "type" : "string",
            "format" : "date"
          },
          "performanceDateEnd" : {
            "type" : "string",
            "format" : "date"
          },
          "financialAccountGross" : {
            "type" : "boolean"
          },
          "contractNumber" : {
            "type" : "string"
          }
        }
      },
      "CreditNote" : {
        "type" : "object",
        "properties" : {
          "accountNumber" : {
            "type" : "string"
          },
          "contractNumber" : {
            "type" : "string"
          },
          "number" : {
            "type" : "string"
          },
          "date" : {
            "type" : "string",
            "format" : "date"
          },
          "customerNumber" : {
            "type" : "string"
          },
          "customerTitle" : {
            "type" : "string"
          },
          "customerName1" : {
            "type" : "string"
          },
          "customerName2" : {
            "type" : "string"
          },
          "addressLine1" : {
            "type" : "string"
          },
          "addressLine2" : {
            "type" : "string"
          },
          "addressLine3" : {
            "type" : "string"
          },
          "zipCode" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountGross" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "documentDeliveryMode" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "contractNumbers" : {
            "type" : "string"
          },
          "settlementDate" : {
            "type" : "string",
            "format" : "date"
          },
          "dueDate" : {
            "type" : "string",
            "format" : "date"
          },
          "duePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "amountPaid" : {
            "type" : "number"
          },
          "canceled" : {
            "type" : "boolean"
          },
          "payItems" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/CreditNotePayItem"
            }
          }
        }
      },
      "CreditNotePayItem" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number"
          },
          "taxRatePercent" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountNetSum" : {
            "type" : "number"
          },
          "itemNumber" : {
            "type" : "string"
          },
          "itemName" : {
            "type" : "string"
          },
          "itemUnit" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "financialAccountRevenue" : {
            "type" : "string"
          },
          "financialAccountTax" : {
            "type" : "string"
          },
          "discountPercent" : {
            "type" : "number"
          },
          "discountApplied" : {
            "type" : "boolean"
          },
          "performanceDateStart" : {
            "type" : "string",
            "format" : "date"
          },
          "performanceDateEnd" : {
            "type" : "string",
            "format" : "date"
          },
          "financialAccountGross" : {
            "type" : "boolean"
          },
          "contractNumber" : {
            "type" : "string"
          }
        }
      },
      "Tenant" : {
        "type" : "object",
        "properties" : {
          "alias" : {
            "type" : "string"
          },
          "tenantTariff" : {
            "$ref" : "#/components/schemas/TenantTariff"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "ACTIVE", "DISABLED", "CANCELLED" ]
          },
          "tenantSettings" : {
            "$ref" : "#/components/schemas/TenantSettings"
          }
        }
      },
      "TenantSettings" : {
        "type" : "object",
        "properties" : {
          "customerCenterSubdomain" : {
            "type" : "string"
          },
          "customerCenterActive" : {
            "type" : "boolean"
          }
        }
      },
      "TenantTariff" : {
        "type" : "object",
        "properties" : {
          "maxCustomers" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxContracts" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxInvoices" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxProjects" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxItems" : {
            "type" : "integer",
            "format" : "int32"
          },
          "apiEnabled" : {
            "type" : "boolean"
          },
          "customerCenterEnabled" : {
            "type" : "boolean"
          },
          "accountingExportEnabled" : {
            "type" : "boolean"
          },
          "dunningEnabled" : {
            "type" : "boolean"
          },
          "title" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "additionalContractCost" : {
            "type" : "number"
          },
          "shortName" : {
            "type" : "string"
          }
        }
      },
      "Project" : {
        "type" : "object",
        "properties" : {
          "shortname" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "websiteUrl" : {
            "type" : "string"
          },
          "interfaceEnabled" : {
            "type" : "boolean"
          },
          "testMode" : {
            "type" : "boolean"
          }
        }
      },
      "Contract" : {
        "type" : "object",
        "properties" : {
          "accountNumber" : {
            "type" : "integer",
            "format" : "int64"
          },
          "customerNumber" : {
            "type" : "string"
          },
          "projectName" : {
            "type" : "string"
          },
          "subscription" : {
            "$ref" : "#/components/schemas/Subscription"
          },
          "contractNumber" : {
            "type" : "integer",
            "format" : "int64"
          },
          "name" : {
            "type" : "string"
          },
          "issueDate" : {
            "type" : "string",
            "format" : "date"
          },
          "recur" : {
            "type" : "integer",
            "format" : "int32"
          },
          "recurUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "duePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "cancellationDate" : {
            "type" : "string",
            "format" : "date"
          },
          "terminationDate" : {
            "type" : "string",
            "format" : "date"
          },
          "endDate" : {
            "type" : "string",
            "format" : "date"
          },
          "lastBilling" : {
            "type" : "string",
            "format" : "date"
          },
          "nextBilling" : {
            "type" : "string",
            "description" : "date, when the next invoice should be sent out to the customer. leave empty to start with beginning of contract.",
            "format" : "date"
          },
          "paymentMethod" : {
            "type" : "string",
            "enum" : [ "BANKTRANSFER", "PAYPAL", "MONEYBOOKERS", "SOFORTUEBERWEISUNG", "SEPA_DEBIT", "CREDITCARD" ]
          },
          "contractStatus" : {
            "type" : "string",
            "enum" : [ "DRAFT", "ACTIVE", "TERMINATED", "CANCELLED", "ENDED", "UPGRADED" ]
          },
          "trialPeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "trialUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "trialPeriodEndAction" : {
            "type" : "string",
            "enum" : [ "CONTINUE", "END_CONTRACT" ]
          },
          "hasTrialperiod" : {
            "type" : "boolean"
          },
          "couponCode" : {
            "type" : "string"
          },
          "ccDisallowTermination" : {
            "type" : "boolean",
            "description" : "disable cancellation via selfservice portal for this contract."
          },
          "upgradeDate" : {
            "type" : "string",
            "description" : "date, when the contract has been upgraded.",
            "format" : "date"
          },
          "parentContractNumber" : {
            "type" : "integer",
            "description" : "created by upgrade/downgrade process",
            "format" : "int64",
            "readOnly" : true
          },
          "successorContractNumber" : {
            "type" : "integer",
            "description" : "created by upgrade/downgrade process",
            "format" : "int64",
            "readOnly" : true
          },
          "customFields" : {
            "title" : "customFields object",
            "type" : "object",
            "additionalProperties" : {
              "title" : "customFields object",
              "type" : "object",
              "description" : "custom fields data as object with key/value pairs. read-only! use ./customFields PUT/PATCH to modify data",
              "readOnly" : true
            },
            "description" : "custom fields data as object with key/value pairs. read-only! use ./customFields PUT/PATCH to modify data",
            "readOnly" : true
          },
          "taxConfig" : {
            "type" : "string",
            "enum" : [ "AUTOMATIC", "APPLY_ALWAYS", "APPLY_NEVER" ]
          },
          "documentDeliveryMode" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "zugferdProfile" : {
            "type" : "string",
            "enum" : [ "NONE", "ZF2_MINIMUM", "ZF2_BASICWL", "ZF2_BASIC", "ZF2_EN16931", "ZF2_EXTENDED", "ZF2_XRECHNUNG", "ZF1_BASIC", "ZF1_COMFORT", "ZF1_EXTENDED" ]
          },
          "extraTextInvoiceHeader" : {
            "type" : "string",
            "description" : "custom text to place on invoice above invoice positions"
          },
          "extraTextInvoiceFooter" : {
            "type" : "string",
            "description" : "custom text to place on invoice below invoice positions"
          },
          "extraTextInvoiceEmail" : {
            "type" : "string",
            "description" : "custom text for invoice email"
          },
          "extraTextCreditnoteHeader" : {
            "type" : "string",
            "description" : "custom text to place on credit note above invoice positions"
          },
          "extraTextCreditnoteFooter" : {
            "type" : "string",
            "description" : "custom text to place on credit note below invoice positions"
          },
          "extraTextCreditnoteEmail" : {
            "type" : "string",
            "description" : "custom text for credit note email"
          }
        }
      },
      "Subscription" : {
        "type" : "object",
        "properties" : {
          "termPeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "termUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "noticePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "noticeUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "continuePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "continueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "billedInAdvance" : {
            "type" : "boolean"
          },
          "subscriptionItems" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriptionItem"
            }
          },
          "status" : {
            "type" : "string",
            "enum" : [ "DRAFT", "ACTIVE", "PAUSED", "NOCREDIT", "ENDED" ]
          }
        }
      },
      "SubscriptionItem" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number",
            "description" : "must be positive"
          },
          "extraDescription" : {
            "type" : "string",
            "description" : "additional information for subscription item. will be added to invoice position"
          },
          "htmlExtraDescription" : {
            "type" : "string",
            "description" : "additional information for subscription item (HTML). only used in web pages."
          },
          "uuid" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string",
            "description" : "name of the original item",
            "readOnly" : true
          },
          "itemNumber" : {
            "type" : "string",
            "readOnly" : true
          },
          "description" : {
            "type" : "string",
            "description" : "description from the original item",
            "readOnly" : true
          },
          "unit" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "PIECE", "HOUR", "MINUTE", "SECOND", "DAY", "WEEK", "MONTH", "YEAR", "KWH" ]
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date"
          },
          "validTo" : {
            "type" : "string",
            "format" : "date"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "billedTo" : {
            "type" : "string",
            "description" : "expert setting! the subscription item has already been billed up to the day before the selected date and may only be taken into account in the invoice run again on the selected date (00:00 a.m.).",
            "format" : "date"
          },
          "ccQuantityChange" : {
            "type" : "boolean",
            "description" : "customer is allowed to change the quantity in selfservice portal."
          },
          "ccMaxQuantity" : {
            "type" : "number",
            "description" : "the maximum quantity that can be upgraded to in selfservice portal."
          },
          "ccMinQuantity" : {
            "type" : "number",
            "description" : "the minimum quantity that can be downgraded to in selfservice portal."
          },
          "status" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "ACTIVE", "UPDOWNGRADED", "CANCELED" ]
          },
          "type" : {
            "type" : "string",
            "description" : "only needs to be set for ADDON type. when updating set to null to keep current value.",
            "nullable" : true,
            "example" : "ADDON",
            "enum" : [ "DEFAULT", "ADDON" ]
          },
          "upgraded" : {
            "type" : "string",
            "description" : "date, when the subscriptionItem was upgraded/downgraded",
            "format" : "date"
          },
          "activityType" : {
            "type" : "string",
            "description" : "type of activity for the subscription item. when updating set to null to keep current value.",
            "nullable" : true,
            "example" : "DEFAULT_PERFORMANCE",
            "enum" : [ "DEFAULT_PERFORMANCE", "REVERSE_PERFORMANCE_COMMISSION", "REVERSE_PERFORMANCE_OTHER" ]
          }
        }
      },
      "CreditNoteDocument" : {
        "type" : "object",
        "properties" : {
          "document" : {
            "type" : "string",
            "format" : "byte"
          }
        }
      },
      "Dummy" : {
        "type" : "object",
        "properties" : {
          "testString" : {
            "type" : "string"
          },
          "testInt" : {
            "type" : "integer",
            "format" : "int32"
          },
          "testDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "testLocalDate" : {
            "type" : "string",
            "format" : "date"
          },
          "testLocalDateTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "testBigDecimal" : {
            "type" : "number"
          }
        }
      },
      "Account" : {
        "type" : "object",
        "properties" : {
          "accountNumber" : {
            "type" : "integer",
            "format" : "int64",
            "readOnly" : true
          },
          "customerNumber" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "PREPAID", "POSTPAID" ]
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "balance" : {
            "type" : "number",
            "readOnly" : true
          },
          "creditLimit" : {
            "type" : "number"
          },
          "minimumCharge" : {
            "type" : "number"
          },
          "frozenAmount" : {
            "type" : "number",
            "readOnly" : true
          },
          "created" : {
            "type" : "string",
            "format" : "date",
            "readOnly" : true
          },
          "debitAccount" : {
            "type" : "string",
            "description" : "Fibu debitor account (accounts receivable)"
          },
          "creditAccount" : {
            "type" : "string",
            "description" : "Fibu creditor account (accounts payable)"
          }
        }
      },
      "RestError" : {
        "type" : "object",
        "properties" : {
          "errorKey" : {
            "type" : "string",
            "enum" : [ "VALIDATION_ERROR", "SERVICE_EXCEPTION", "INCORRECT_INPUT_DATA", "MISSING_REQUIRED_DATA", "INVALID_OPERATION", "UNKNOWN_ERROR" ]
          },
          "errorMessage" : {
            "type" : "string"
          }
        }
      },
      "AccountTransaction" : {
        "type" : "object",
        "properties" : {
          "amount" : {
            "type" : "number"
          },
          "dateTime" : {
            "type" : "string",
            "description" : "the booking date (valuta)",
            "format" : "date-time"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "CHARGE_PREPAID", "CHARGE_POSTPAID", "INVOICE_CREATED", "INVOICE_PAY", "INVOICE_CANCEL", "INVOICE_CHARGEBACK", "INVOICE_REOPEN", "CREDITNOTE_CANCEL", "CREDITNOTE_CREATED", "CREDITNOTE_PAY", "MANUAL_DEBIT", "MANUAL_CREDIT", "STARTCREDIT_COUPON", "PAYOUT_SEPA_TRANSER", "CHARGEBACK_PSP" ]
          },
          "info" : {
            "type" : "string"
          },
          "origin" : {
            "type" : "string",
            "enum" : [ "MANUAL", "ONLINEBANKING", "RECURRING_PAYMENT", "UNKNOWN", "SYSTEM", "SEPA_XML_GENERATE", "PSP", "API", "CONTRACT_TERMINATION", "UPDOWNGRADE" ]
          },
          "entityCreatedUser" : {
            "type" : "string",
            "description" : "who created this transaction?",
            "readOnly" : true
          },
          "entityCreatedDateTime" : {
            "type" : "string",
            "description" : "when was this transaction created?",
            "format" : "date-time",
            "readOnly" : true
          },
          "balance" : {
            "type" : "number",
            "description" : "account balance after this transaction. the value is determined with a time delay.",
            "readOnly" : true
          }
        }
      },
      "Activity" : {
        "required" : [ "performanceDateStart" ],
        "type" : "object",
        "properties" : {
          "itemNumber" : {
            "type" : "string",
            "example" : "ITEM001"
          },
          "quantity" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "must be positive",
            "example" : 1
          },
          "frozenAmountGross" : {
            "type" : "number",
            "readOnly" : true
          },
          "individualPrice" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "optional individual price. up to 4 fractional digits. must be positive",
            "nullable" : true,
            "example" : 4.1234
          },
          "description" : {
            "type" : "string",
            "example" : "additional information text"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "scheduled" : {
            "type" : "string",
            "format" : "date",
            "readOnly" : true
          },
          "billed" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "performanceDateStart" : {
            "type" : "string",
            "format" : "date"
          },
          "performanceDateEnd" : {
            "type" : "string",
            "format" : "date",
            "nullable" : true
          },
          "origin" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "MANUAL", "SUBSCRIPTION", "API", "OTHER" ]
          },
          "accountNumber" : {
            "type" : "string",
            "readOnly" : true
          },
          "contractNumber" : {
            "type" : "string",
            "readOnly" : true
          },
          "customerNumber" : {
            "type" : "string",
            "readOnly" : true
          },
          "type" : {
            "type" : "string",
            "description" : "type of activity",
            "nullable" : true,
            "example" : "DEFAULT_PERFORMANCE",
            "enum" : [ "DEFAULT_PERFORMANCE", "REVERSE_PERFORMANCE_COMMISSION", "REVERSE_PERFORMANCE_OTHER" ]
          },
          "uuid" : {
            "type" : "string",
            "description" : "Leave empty when creating a new activity",
            "format" : "uuid"
          }
        }
      },
      "ContractAttachment" : {
        "type" : "object",
        "properties" : {
          "sendToCustomer" : {
            "type" : "boolean"
          },
          "sendPermanently" : {
            "type" : "boolean"
          },
          "showInCustomercenter" : {
            "type" : "boolean"
          },
          "sendDate" : {
            "type" : "string",
            "format" : "date"
          },
          "fileSizeBytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "fileName" : {
            "type" : "string"
          },
          "mimeType" : {
            "type" : "string"
          },
          "binaryDocumentUuid" : {
            "type" : "string",
            "format" : "uuid"
          }
        }
      },
      "BinaryDocument" : {
        "type" : "object",
        "properties" : {
          "document" : {
            "type" : "string",
            "format" : "byte"
          }
        }
      },
      "EmailAddress" : {
        "required" : [ "email", "usecase" ],
        "type" : "object",
        "properties" : {
          "contractNumber" : {
            "type" : "string",
            "description" : "contract number, this email address is assigned to (optional)"
          },
          "usecase" : {
            "type" : "string",
            "description" : "use case, the email address will be used for",
            "enum" : [ "INVOICE_CREATED", "DUNNING" ]
          },
          "email" : {
            "type" : "string",
            "description" : "the email address"
          }
        }
      },
      "PriceCalculationResultContract" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriptionItemWithPrices"
            }
          },
          "sumRecurNet" : {
            "type" : "number"
          },
          "sumRecurGross" : {
            "type" : "number"
          },
          "sumOnetimeNet" : {
            "type" : "number"
          },
          "sumOnetimeGross" : {
            "type" : "number"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          }
        }
      },
      "SubscriptionItemWithPrices" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number",
            "description" : "must be positive"
          },
          "extraDescription" : {
            "type" : "string",
            "description" : "additional information for subscription item. will be added to invoice position"
          },
          "htmlExtraDescription" : {
            "type" : "string",
            "description" : "additional information for subscription item (HTML). only used in web pages."
          },
          "uuid" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string",
            "description" : "name of the original item",
            "readOnly" : true
          },
          "itemNumber" : {
            "type" : "string",
            "readOnly" : true
          },
          "description" : {
            "type" : "string",
            "description" : "description from the original item",
            "readOnly" : true
          },
          "unit" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "PIECE", "HOUR", "MINUTE", "SECOND", "DAY", "WEEK", "MONTH", "YEAR", "KWH" ]
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date"
          },
          "validTo" : {
            "type" : "string",
            "format" : "date"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "billedTo" : {
            "type" : "string",
            "description" : "expert setting! the subscription item has already been billed up to the day before the selected date and may only be taken into account in the invoice run again on the selected date (00:00 a.m.).",
            "format" : "date"
          },
          "ccQuantityChange" : {
            "type" : "boolean",
            "description" : "customer is allowed to change the quantity in selfservice portal."
          },
          "ccMaxQuantity" : {
            "type" : "number",
            "description" : "the maximum quantity that can be upgraded to in selfservice portal."
          },
          "ccMinQuantity" : {
            "type" : "number",
            "description" : "the minimum quantity that can be downgraded to in selfservice portal."
          },
          "status" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "ACTIVE", "UPDOWNGRADED", "CANCELED" ]
          },
          "type" : {
            "type" : "string",
            "description" : "only needs to be set for ADDON type. when updating set to null to keep current value.",
            "nullable" : true,
            "example" : "ADDON",
            "enum" : [ "DEFAULT", "ADDON" ]
          },
          "upgraded" : {
            "type" : "string",
            "description" : "date, when the subscriptionItem was upgraded/downgraded",
            "format" : "date"
          },
          "activityType" : {
            "type" : "string",
            "description" : "type of activity for the subscription item. when updating set to null to keep current value.",
            "nullable" : true,
            "example" : "DEFAULT_PERFORMANCE",
            "enum" : [ "DEFAULT_PERFORMANCE", "REVERSE_PERFORMANCE_COMMISSION", "REVERSE_PERFORMANCE_OTHER" ]
          },
          "priceNet" : {
            "type" : "number"
          },
          "priceGross" : {
            "type" : "number"
          },
          "priceTotalNet" : {
            "type" : "number"
          },
          "priceTotalGross" : {
            "type" : "number"
          },
          "taxRate" : {
            "type" : "number"
          },
          "taxTotal" : {
            "type" : "number"
          }
        }
      },
      "ContractTerminationResponse" : {
        "type" : "object",
        "properties" : {
          "contractNumber" : {
            "type" : "integer",
            "format" : "int64"
          },
          "contractStatus" : {
            "type" : "string",
            "enum" : [ "DRAFT", "ACTIVE", "TERMINATED", "CANCELLED", "ENDED", "UPGRADED" ]
          },
          "endDate" : {
            "type" : "string",
            "format" : "date"
          }
        }
      },
      "ContractTerminationRequest" : {
        "type" : "object",
        "properties" : {
          "terminationDate" : {
            "type" : "string",
            "format" : "date"
          },
          "sendMailToCustomer" : {
            "type" : "boolean"
          },
          "extraordinaryTermination" : {
            "type" : "boolean",
            "description" : "contract will be terminated immediately on the terminationDate."
          },
          "autoDowngradeSubscriptionItems" : {
            "type" : "boolean",
            "description" : "remove all subscription items pro rated on terminationDate. May create a invoice correction. Only use this for extraordinary termination."
          },
          "skipInvoiceCorrection" : {
            "type" : "boolean",
            "description" : "Even if the customer is entitled to a refund, dont create any invoice corrections during termination of contract."
          }
        }
      },
      "ContractSmallUpgradeRequest" : {
        "type" : "object",
        "properties" : {
          "upgradeDate" : {
            "type" : "string",
            "format" : "date"
          },
          "itemsToRemove" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriptionItem"
            }
          },
          "itemsToAdd" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriptionItem"
            }
          },
          "hintTextCustomer" : {
            "type" : "string",
            "description" : "shown on positions of invoices and invoice corrections created during upgrade/downgrade"
          },
          "copyCustomPrices" : {
            "type" : "boolean",
            "description" : "transfer custom prices to newly created subscription item. only possible for changing quantity of one single item."
          }
        }
      },
      "ContractBigUpgradeRequest" : {
        "required" : [ "upgradeDate" ],
        "type" : "object",
        "properties" : {
          "upgradeDate" : {
            "type" : "string",
            "format" : "date"
          },
          "hintTextCustomer" : {
            "type" : "string",
            "description" : "shown on positions of invoices and invoice corrections created during upgrade/downgrade"
          },
          "contractSubscriptionTemplate" : {
            "type" : "string",
            "description" : "template to use for the new contract",
            "format" : "uuid"
          },
          "inheritContractStart" : {
            "type" : "boolean",
            "description" : "set original contract start date for followup contract"
          },
          "copyCustomPrices" : {
            "type" : "boolean",
            "description" : "copy custom prices on subscription items to followup contract"
          },
          "copyDiscounts" : {
            "type" : "boolean",
            "description" : "copy discounts to followup contract"
          },
          "copyComissionRules" : {
            "type" : "boolean",
            "description" : "copy commission rules to followup contract"
          }
        }
      },
      "ContractAttachmentDocument" : {
        "required" : [ "fileName", "mimeType" ],
        "type" : "object",
        "properties" : {
          "document" : {
            "type" : "string",
            "format" : "byte"
          },
          "sendToCustomer" : {
            "type" : "boolean",
            "description" : "send this document to the customer once with next billing cycle."
          },
          "sendPermanently" : {
            "type" : "boolean",
            "description" : "send this document to the customer on every billing cycle."
          },
          "showInCustomercenter" : {
            "type" : "boolean",
            "description" : "show document in self service portal."
          },
          "fileSizeBytes" : {
            "type" : "integer",
            "description" : "size of file in bytes. will be calculated if empty.",
            "format" : "int64"
          },
          "fileName" : {
            "type" : "string",
            "description" : "the full name of the file including extension."
          },
          "mimeType" : {
            "type" : "string",
            "description" : "the mime type of the file."
          }
        }
      },
      "ContractCommissionRuleVO" : {
        "type" : "object",
        "properties" : {
          "commissionPercent" : {
            "type" : "number"
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date"
          },
          "validTo" : {
            "type" : "string",
            "format" : "date"
          },
          "commissionItemNumber" : {
            "type" : "string",
            "description" : "item to be used for commission"
          },
          "commissionContractNumber" : {
            "type" : "string",
            "description" : "contract to be credited"
          },
          "applyRecurrItems" : {
            "type" : "boolean"
          },
          "applyOneTimeItems" : {
            "type" : "boolean"
          },
          "payItemDetailOneTime" : {
            "type" : "string",
            "description" : "text to be added on creditnote below the commission item (commission on one time items). set to null to use defaults."
          },
          "payItemDetailRecurring" : {
            "type" : "string",
            "description" : "text to be added on creditnote below the commission item (commission on recurring items). set to null to use defaults."
          },
          "payItemDetailItem" : {
            "type" : "string",
            "description" : "text to be added on creditnote below the commission item (item based commission). set to null to use defaults."
          },
          "items" : {
            "type" : "array",
            "description" : "for creating a new commission rule, only the itemNumber is required.",
            "items" : {
              "$ref" : "#/components/schemas/Item"
            }
          },
          "useItems" : {
            "type" : "boolean"
          },
          "applyMode" : {
            "type" : "string",
            "description" : "when to apply the commission? (default INVOICE_CREATE)",
            "enum" : [ "INVOICE_CREATE", "INVOICE_PAY" ]
          }
        }
      },
      "Item" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "nameInternal" : {
            "type" : "string"
          },
          "itemNumber" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "htmlDescription" : {
            "type" : "string"
          },
          "unit" : {
            "type" : "string",
            "enum" : [ "PIECE", "HOUR", "MINUTE", "SECOND", "DAY", "WEEK", "MONTH", "YEAR", "KWH" ]
          },
          "prices" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Price"
            }
          },
          "itemCategory" : {
            "$ref" : "#/components/schemas/ItemCategory"
          },
          "customFields" : {
            "title" : "customFields object",
            "type" : "object",
            "additionalProperties" : {
              "title" : "customFields object",
              "type" : "object",
              "description" : "custom fields data as object with key/value pairs. read-only! use ./customFields PUT/PATCH to modify data",
              "readOnly" : true
            },
            "description" : "custom fields data as object with key/value pairs. read-only! use ./customFields PUT/PATCH to modify data",
            "readOnly" : true
          }
        },
        "description" : "a single item. can be used in a subscription."
      },
      "ItemCategory" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "project" : {
            "$ref" : "#/components/schemas/Project"
          },
          "financialAccountTaxable" : {
            "type" : "string"
          },
          "financialAccountTaxfree" : {
            "type" : "string"
          },
          "financialAccountEuTaxfree" : {
            "type" : "string"
          },
          "financialAccountB2cDestCountry" : {
            "type" : "string"
          },
          "financialAccountB2cDestCountryTax" : {
            "type" : "string"
          },
          "destinationCountryTax" : {
            "type" : "boolean"
          }
        },
        "description" : "a item category. each item needs to be assigned to one.",
        "readOnly" : true
      },
      "Price" : {
        "type" : "object",
        "properties" : {
          "cost" : {
            "type" : "number",
            "description" : "must be positive"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date"
          },
          "minimumQuantity" : {
            "type" : "number"
          },
          "uuid" : {
            "type" : "string",
            "format" : "uuid"
          }
        }
      },
      "ContractDiscount" : {
        "type" : "object",
        "properties" : {
          "discountConfigName" : {
            "type" : "string"
          },
          "discountPercent" : {
            "type" : "number"
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date"
          },
          "validTo" : {
            "type" : "string",
            "format" : "date"
          },
          "uuid" : {
            "type" : "string",
            "format" : "uuid"
          }
        }
      },
      "ContractRecurringPaymentConfig" : {
        "type" : "object",
        "properties" : {
          "paymentMethod" : {
            "type" : "string",
            "enum" : [ "BANKTRANSFER", "PAYPAL", "MONEYBOOKERS", "SOFORTUEBERWEISUNG", "SEPA_DEBIT", "CREDITCARD" ]
          },
          "paymentProvider" : {
            "type" : "string",
            "enum" : [ "WIRECARD", "PAYMILL", "HEIDELPAY", "ADYEN", "STRIPE", "FINAPI", "BRAINTREE", "UNZER" ]
          },
          "referenceId" : {
            "type" : "string",
            "description" : "payment reference id from the provider (stripe: customer)"
          },
          "pspPaymentMethod" : {
            "type" : "string",
            "description" : "currently only used by stripe"
          },
          "active" : {
            "type" : "boolean"
          },
          "bookIncomingPayment" : {
            "type" : "boolean"
          }
        }
      },
      "DiscountConfig" : {
        "type" : "object",
        "properties" : {
          "projectName" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "discountPercent" : {
            "type" : "number"
          },
          "createInvoicePosition" : {
            "type" : "boolean"
          },
          "validityPeriod" : {
            "type" : "integer",
            "format" : "int64"
          },
          "validityUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "applyRecurrItems" : {
            "type" : "boolean"
          },
          "applyOneTimeItems" : {
            "type" : "boolean"
          },
          "items" : {
            "type" : "array",
            "description" : "for creating a new discount config only the itemNumber is required.",
            "items" : {
              "$ref" : "#/components/schemas/Item"
            }
          },
          "useItems" : {
            "type" : "boolean",
            "description" : "apply discount only to items listed in property 'items'."
          }
        }
      },
      "PriceCalculationResultItem" : {
        "type" : "object",
        "properties" : {
          "itemPriceNet" : {
            "type" : "number"
          },
          "itemCatalogPriceNet" : {
            "type" : "number"
          },
          "itemPriceGross" : {
            "type" : "number"
          },
          "taxAmount" : {
            "type" : "number"
          },
          "discountAmountNet" : {
            "type" : "number"
          },
          "discountPercent" : {
            "type" : "number"
          },
          "currencyUnit" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "taxRate" : {
            "$ref" : "#/components/schemas/TaxRate"
          },
          "taxRule" : {
            "type" : "string",
            "enum" : [ "NATIONAL", "EU_REVERSECHARGE", "NON_EU_TAXFREE", "DSTCOUNTRY_TAX_EU", "OVERRIDE_NEVER", "OVERRIDE_ALWAYS" ]
          },
          "discountConfig" : {
            "$ref" : "#/components/schemas/DiscountConfig"
          }
        }
      },
      "TaxRate" : {
        "type" : "object",
        "properties" : {
          "percent" : {
            "type" : "number"
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date"
          },
          "validTo" : {
            "type" : "string",
            "format" : "date"
          }
        }
      },
      "ContractItemPriceCalculationRequest" : {
        "required" : [ "currency", "itemNumber", "performanceDateStart", "quantity" ],
        "type" : "object",
        "properties" : {
          "itemNumber" : {
            "type" : "string",
            "description" : "the itemnumber you want to calculate the price for"
          },
          "performanceDateStart" : {
            "type" : "string",
            "description" : "when will the service/article be used/booked?",
            "format" : "date"
          },
          "performanceDateEnd" : {
            "type" : "string",
            "description" : "enddate for the booking period. (optional)",
            "format" : "date"
          },
          "currency" : {
            "type" : "string",
            "description" : "the currency to apply e. g. EUR",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "quantity" : {
            "type" : "number",
            "description" : "amount of the item to be booked"
          }
        }
      },
      "ContractFromTemplate" : {
        "type" : "object",
        "properties" : {
          "customerNumber" : {
            "type" : "string"
          },
          "issueDate" : {
            "type" : "string",
            "format" : "date"
          },
          "activateContract" : {
            "type" : "boolean"
          },
          "sendOrderConfirmation" : {
            "type" : "boolean"
          }
        }
      },
      "ContractSubscriptionTemplate" : {
        "type" : "object",
        "properties" : {
          "projectName" : {
            "type" : "string"
          },
          "uuid" : {
            "type" : "string",
            "format" : "uuid"
          },
          "name" : {
            "type" : "string"
          },
          "recur" : {
            "type" : "integer",
            "format" : "int32"
          },
          "recurUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "termPeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "termUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "noticePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "noticeUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "continuePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "continueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "billedInAdvance" : {
            "type" : "boolean"
          },
          "trialPeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "trialUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "trialPeriodEndAction" : {
            "type" : "string",
            "enum" : [ "CONTINUE", "END_CONTRACT" ]
          },
          "hasTrialperiod" : {
            "type" : "boolean"
          },
          "itemList" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriptionTemplateItem"
            }
          },
          "addonList" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriptionTemplateAddonItem"
            }
          },
          "duePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          }
        }
      },
      "SubscriptionTemplateAddonItem" : {
        "type" : "object",
        "properties" : {
          "item" : {
            "$ref" : "#/components/schemas/Item"
          },
          "quantity" : {
            "type" : "number"
          },
          "extraDescription" : {
            "type" : "string"
          },
          "htmlExtraDescription" : {
            "type" : "string"
          },
          "itemType" : {
            "type" : "string",
            "enum" : [ "RECURRING", "ONETIME" ]
          },
          "orderQuantityChange" : {
            "type" : "boolean"
          },
          "ccQuantityChange" : {
            "type" : "boolean"
          },
          "orderMaxQuantity" : {
            "type" : "number"
          },
          "orderMinQuantity" : {
            "type" : "number"
          },
          "ccMaxQuantity" : {
            "type" : "number"
          },
          "ccMinQuantity" : {
            "type" : "number"
          }
        }
      },
      "SubscriptionTemplateItem" : {
        "type" : "object",
        "properties" : {
          "item" : {
            "$ref" : "#/components/schemas/Item"
          },
          "quantity" : {
            "type" : "number"
          },
          "extraDescription" : {
            "type" : "string"
          },
          "htmlExtraDescription" : {
            "type" : "string"
          },
          "itemType" : {
            "type" : "string",
            "enum" : [ "RECURRING", "ONETIME" ]
          },
          "orderQuantityChange" : {
            "type" : "boolean"
          },
          "ccQuantityChange" : {
            "type" : "boolean"
          },
          "orderMaxQuantity" : {
            "type" : "number"
          },
          "orderMinQuantity" : {
            "type" : "number"
          },
          "ccMaxQuantity" : {
            "type" : "number"
          },
          "ccMinQuantity" : {
            "type" : "number"
          }
        }
      },
      "SepaDebitMandate" : {
        "required" : [ "created", "debitType", "mandateType", "status" ],
        "type" : "object",
        "properties" : {
          "debitType" : {
            "type" : "string",
            "enum" : [ "BASIS_LASTSCHRIFT", "FIRMEN_LASTSCHRIFT" ]
          },
          "mandateType" : {
            "type" : "string",
            "enum" : [ "ONETIME", "RECUR" ]
          },
          "status" : {
            "type" : "string",
            "enum" : [ "CREATED", "ACTIVE", "INACTIVE", "CANCELED" ]
          },
          "mandateNumber" : {
            "type" : "string",
            "description" : "will be created automatically if empty when creating a new mandate."
          },
          "created" : {
            "type" : "string",
            "description" : "date, when the mandate has been created",
            "format" : "date"
          },
          "issueDate" : {
            "type" : "string",
            "description" : "date, when the mandate was issued by the customer. Mandatory for activation of a contract.",
            "format" : "date"
          },
          "firstUsage" : {
            "type" : "string",
            "description" : "date, when this mandate has been used the first time",
            "format" : "date-time"
          },
          "validTo" : {
            "type" : "string",
            "description" : "how long the mandate should be valid",
            "format" : "date"
          },
          "cancelDate" : {
            "type" : "string",
            "description" : "date, when the mandate has been canceled by the customer",
            "format" : "date"
          }
        },
        "description" : "optional: custom sepa debit mandate retrieved from customer."
      },
      "Address" : {
        "type" : "object",
        "properties" : {
          "addressLine1" : {
            "type" : "string"
          },
          "addressLine2" : {
            "type" : "string"
          },
          "addressLine3" : {
            "type" : "string"
          },
          "coRecipient" : {
            "type" : "string"
          },
          "zipCode" : {
            "type" : "string"
          },
          "cityName" : {
            "type" : "string"
          },
          "state" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          }
        }
      },
      "Customer" : {
        "type" : "object",
        "properties" : {
          "salutation" : {
            "type" : "string",
            "enum" : [ "MR", "MRS", "COMPANY" ]
          },
          "firstName" : {
            "type" : "string"
          },
          "lastName" : {
            "type" : "string"
          },
          "companyName" : {
            "type" : "string"
          },
          "locale" : {
            "type" : "string",
            "example" : "de_DE"
          },
          "websiteUri" : {
            "type" : "string"
          },
          "phone1" : {
            "type" : "string"
          },
          "phone2" : {
            "type" : "string"
          },
          "telefax" : {
            "type" : "string"
          },
          "mobile" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "birthdate" : {
            "type" : "string",
            "format" : "date"
          },
          "euTaxId" : {
            "type" : "string"
          },
          "taxNumber" : {
            "type" : "string"
          },
          "noteText" : {
            "type" : "string"
          },
          "postalAddress" : {
            "$ref" : "#/components/schemas/Address"
          },
          "billingAddress" : {
            "$ref" : "#/components/schemas/Address"
          },
          "bankAccountIban" : {
            "type" : "string"
          },
          "bankAccountBic" : {
            "type" : "string"
          },
          "bankAccountOwner" : {
            "type" : "string"
          },
          "entityCreatedDateTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "entityUpdatedDateTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "entityCreatedUser" : {
            "type" : "string",
            "readOnly" : true
          },
          "customerNumber" : {
            "type" : "string",
            "description" : "for creating a new customer with existing number provide full pattern incl. prefix e. g. 'K5000' - otherwise leave empty for auto creation"
          },
          "taxRegion" : {
            "type" : "string",
            "enum" : [ "NATIONAL", "EU", "NONEU" ]
          },
          "duePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "paymentMethod" : {
            "type" : "string",
            "enum" : [ "BANKTRANSFER", "PAYPAL", "MONEYBOOKERS", "SOFORTUEBERWEISUNG", "SEPA_DEBIT", "CREDITCARD" ]
          },
          "emailInvoice" : {
            "type" : "string"
          },
          "orderNumber" : {
            "type" : "string",
            "description" : "available, if the customer was created from an order",
            "readOnly" : true
          },
          "customFields" : {
            "title" : "customFields object",
            "type" : "object",
            "additionalProperties" : {
              "title" : "customFields object",
              "type" : "object",
              "description" : "custom fields data as object with key/value pairs. read-only! use ./customFields PUT/PATCH to modify data",
              "readOnly" : true
            },
            "description" : "custom fields data as object with key/value pairs. read-only! use ./customFields PUT/PATCH to modify data",
            "readOnly" : true
          },
          "dunningDisabled" : {
            "type" : "boolean",
            "example" : false,
            "default" : false
          }
        }
      },
      "CouponCode" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "creationDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "reservationDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "redemptionDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "CREATED", "RESERVED", "REDEEMED" ]
          }
        }
      },
      "CouponCodeRedemptionRequest" : {
        "type" : "object",
        "properties" : {
          "couponCode" : {
            "type" : "string"
          },
          "redemptionDate" : {
            "type" : "string",
            "description" : "Optional: date to set as redemption date. default is today.",
            "format" : "date"
          },
          "projectShortName" : {
            "type" : "string",
            "description" : "Only check the coupon configs assigned to this project. leave empty to check coupon configs without project."
          }
        }
      },
      "CouponConfig" : {
        "type" : "object",
        "properties" : {
          "projectName" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date"
          },
          "validTo" : {
            "type" : "string",
            "format" : "date"
          },
          "couponCodes" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/CouponCode"
            }
          },
          "discountConfigName" : {
            "type" : "string"
          },
          "startCredits" : {
            "type" : "number"
          },
          "startCreditsCurrency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "oneTimeUse" : {
            "type" : "boolean"
          }
        }
      },
      "CouponCodeValidationResult" : {
        "type" : "object",
        "properties" : {
          "valid" : {
            "type" : "boolean"
          },
          "couponCode" : {
            "$ref" : "#/components/schemas/CouponCode"
          },
          "couponConfig" : {
            "$ref" : "#/components/schemas/CouponConfig"
          },
          "discountConfig" : {
            "$ref" : "#/components/schemas/DiscountConfig"
          }
        }
      },
      "CouponCodeValidationRequest" : {
        "type" : "object",
        "properties" : {
          "couponCode" : {
            "type" : "string"
          },
          "validationDate" : {
            "type" : "string",
            "description" : "Optional: date to check the validity. default is today.",
            "format" : "date-time"
          },
          "projectShortName" : {
            "type" : "string",
            "description" : "Only check the coupon configs assigned to this project. leave empty to check coupon configs without project."
          }
        }
      },
      "InvoiceDocument" : {
        "type" : "object",
        "properties" : {
          "document" : {
            "type" : "string",
            "format" : "byte"
          }
        }
      },
      "Invoice" : {
        "type" : "object",
        "properties" : {
          "accountNumber" : {
            "type" : "string"
          },
          "contractNumber" : {
            "type" : "string"
          },
          "number" : {
            "type" : "string"
          },
          "date" : {
            "type" : "string",
            "format" : "date"
          },
          "customerNumber" : {
            "type" : "string"
          },
          "customerTitle" : {
            "type" : "string"
          },
          "customerName1" : {
            "type" : "string"
          },
          "customerName2" : {
            "type" : "string"
          },
          "addressLine1" : {
            "type" : "string"
          },
          "addressLine2" : {
            "type" : "string"
          },
          "addressLine3" : {
            "type" : "string"
          },
          "zipCode" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountGross" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "documentDeliveryMode" : {
            "type" : "string",
            "enum" : [ "EMAIL", "NONE" ]
          },
          "contractNumbers" : {
            "type" : "string"
          },
          "settlementDate" : {
            "type" : "string",
            "format" : "date"
          },
          "dueDate" : {
            "type" : "string",
            "format" : "date"
          },
          "duePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "amountPaid" : {
            "type" : "number"
          },
          "canceled" : {
            "type" : "boolean"
          },
          "payItems" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InvoicePayItem"
            }
          },
          "dunningLevel" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "InvoicePayItem" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number"
          },
          "taxRatePercent" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountNetSum" : {
            "type" : "number"
          },
          "itemNumber" : {
            "type" : "string"
          },
          "itemName" : {
            "type" : "string"
          },
          "itemUnit" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "financialAccountRevenue" : {
            "type" : "string"
          },
          "financialAccountTax" : {
            "type" : "string"
          },
          "discountPercent" : {
            "type" : "number"
          },
          "discountApplied" : {
            "type" : "boolean"
          },
          "performanceDateStart" : {
            "type" : "string",
            "format" : "date"
          },
          "performanceDateEnd" : {
            "type" : "string",
            "format" : "date"
          },
          "financialAccountGross" : {
            "type" : "boolean"
          },
          "contractNumber" : {
            "type" : "string"
          }
        }
      },
      "InvoiceMetadata" : {
        "type" : "object",
        "properties" : {
          "number" : {
            "type" : "string"
          },
          "date" : {
            "type" : "string",
            "format" : "date"
          },
          "customerNumber" : {
            "type" : "string"
          },
          "customerTitle" : {
            "type" : "string"
          },
          "customerName1" : {
            "type" : "string"
          },
          "customerName2" : {
            "type" : "string"
          },
          "addressLine1" : {
            "type" : "string"
          },
          "addressLine2" : {
            "type" : "string"
          },
          "addressLine3" : {
            "type" : "string"
          },
          "zipCode" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "amountNet" : {
            "type" : "number"
          },
          "amountGross" : {
            "type" : "number"
          },
          "created" : {
            "type" : "string",
            "format" : "date-time"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "settlementDate" : {
            "type" : "string",
            "format" : "date"
          },
          "dueDate" : {
            "type" : "string",
            "format" : "date"
          },
          "duePeriod" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dueUnit" : {
            "type" : "string",
            "enum" : [ "DAY", "WEEK", "MONTH", "YEAR" ]
          },
          "amountPaid" : {
            "type" : "number"
          },
          "canceled" : {
            "type" : "boolean"
          },
          "dunningLevel" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "InvoicePayRequest" : {
        "type" : "object",
        "properties" : {
          "payDate" : {
            "type" : "string",
            "format" : "date"
          },
          "payAmount" : {
            "type" : "number"
          }
        }
      },
      "Order" : {
        "required" : [ "customerType", "orderCurrency", "orderTemplatePageId", "paymentMethod" ],
        "type" : "object",
        "properties" : {
          "salutation" : {
            "type" : "string",
            "enum" : [ "MR", "MRS", "COMPANY" ]
          },
          "firstName" : {
            "type" : "string"
          },
          "lastName" : {
            "type" : "string"
          },
          "companyName" : {
            "type" : "string"
          },
          "phone1" : {
            "type" : "string"
          },
          "phone2" : {
            "type" : "string"
          },
          "telefax" : {
            "type" : "string"
          },
          "mobile" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "birthdate" : {
            "type" : "string",
            "format" : "date"
          },
          "euTaxId" : {
            "type" : "string"
          },
          "taxNumber" : {
            "type" : "string"
          },
          "bankAccountIban" : {
            "type" : "string"
          },
          "bankAccountBic" : {
            "type" : "string"
          },
          "bankAccountOwner" : {
            "type" : "string"
          },
          "locale" : {
            "type" : "string",
            "example" : "de_DE"
          },
          "billingAddress" : {
            "$ref" : "#/components/schemas/Address"
          },
          "postalAddress" : {
            "$ref" : "#/components/schemas/Address"
          },
          "paymentMethod" : {
            "type" : "string",
            "enum" : [ "BANKTRANSFER", "PAYPAL", "MONEYBOOKERS", "SOFORTUEBERWEISUNG", "SEPA_DEBIT", "CREDITCARD" ]
          },
          "orderTemplatePageId" : {
            "type" : "string",
            "description" : "pageId of order template to use. required for creating orders"
          },
          "orderTemplateDescription" : {
            "type" : "string",
            "description" : "description of the order template, readonly.",
            "readOnly" : true
          },
          "ipAddress" : {
            "type" : "string"
          },
          "referer" : {
            "type" : "string"
          },
          "orderReference" : {
            "type" : "string"
          },
          "couponCode" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "description" : "can be empty when creating orders",
            "enum" : [ "OPEN", "CUSTOMER_CREATED", "READY", "CANCELED" ]
          },
          "orderNumber" : {
            "type" : "string",
            "description" : "created automatically",
            "readOnly" : true
          },
          "orderItems" : {
            "type" : "array",
            "description" : "leave empty when creating order to use default items from template. otherwise specify item number and quantity of items from template.",
            "items" : {
              "$ref" : "#/components/schemas/OrderItem"
            }
          },
          "customerType" : {
            "type" : "string",
            "enum" : [ "PRIVATE", "BUSINESS" ]
          },
          "orderComment" : {
            "type" : "string"
          },
          "sepaMandateAgreement" : {
            "type" : "boolean",
            "description" : "Set this field to true if the customer has issued a digital SEPA mandate. A SEPA mandate is then automatically created in fakturia when the order is processed. Important: Fill 'bankAccountIban', 'bankAccountBic' and 'bankAccountOwner' as well!",
            "default" : false
          },
          "sepaMandate" : {
            "$ref" : "#/components/schemas/SepaDebitMandate"
          },
          "orderCurrency" : {
            "type" : "string",
            "description" : "the currency the customer wants to use",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "customerNumber" : {
            "type" : "string",
            "description" : "available, if a customer was created based on the order",
            "readOnly" : true
          },
          "paymentRequest" : {
            "$ref" : "#/components/schemas/PaymentRequest"
          },
          "entityCreatedDateTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "entityUpdatedDateTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "customFields" : {
            "title" : "customFields object",
            "type" : "object",
            "additionalProperties" : {
              "title" : "customFields object",
              "type" : "object",
              "description" : "custom fields data as object with key/value pairs. read-only!",
              "readOnly" : true
            },
            "description" : "custom fields data as object with key/value pairs. read-only!",
            "readOnly" : true
          }
        }
      },
      "OrderItem" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number"
          },
          "itemType" : {
            "type" : "string",
            "enum" : [ "RECURRING", "ONETIME" ]
          },
          "name" : {
            "type" : "string"
          },
          "itemNumber" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "unit" : {
            "type" : "string",
            "enum" : [ "PIECE", "HOUR", "MINUTE", "SECOND", "DAY", "WEEK", "MONTH", "YEAR", "KWH" ]
          }
        },
        "description" : "leave empty to use default items from template. otherwise specify item number and quantity of items from template to just calculate the defined items."
      },
      "PaymentRequest" : {
        "type" : "object",
        "properties" : {
          "paymentMethod" : {
            "type" : "string",
            "enum" : [ "BANKTRANSFER", "PAYPAL", "MONEYBOOKERS", "SOFORTUEBERWEISUNG", "SEPA_DEBIT", "CREDITCARD" ]
          },
          "requestDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "internalTransactionNumber" : {
            "type" : "string",
            "description" : "unique id generated by fakturia"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "amountRequested" : {
            "type" : "number"
          },
          "amountConfirmed" : {
            "type" : "number"
          },
          "confirmationDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "status" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "NEW", "PENDING", "PAYMENT_STARTED", "COMPLETED", "CANCELLED", "FAILED" ]
          },
          "provider" : {
            "type" : "string",
            "enum" : [ "WIRECARD", "PAYMILL", "HEIDELPAY", "ADYEN", "STRIPE", "FINAPI", "BRAINTREE", "UNZER" ]
          },
          "providerReferenceId" : {
            "type" : "string"
          },
          "authorizationOnly" : {
            "type" : "boolean",
            "description" : "Was this a authorize only call? (only for credit card)"
          },
          "pspCustomerId" : {
            "type" : "string",
            "description" : "reference to customer at PSP (depends on psp)"
          },
          "pspCardId" : {
            "type" : "string",
            "description" : "reference to card or paymentmethod at PSP (depends on psp)"
          },
          "pspChargeId" : {
            "type" : "string",
            "description" : "reference to charge id at PSP (depends on psp)"
          }
        },
        "description" : "psp data created during order process (if provided, order will be finished when psp has sent confirmation of payment)"
      },
      "OrderTemplate" : {
        "type" : "object",
        "properties" : {
          "contractTemplate" : {
            "$ref" : "#/components/schemas/ContractSubscriptionTemplate"
          },
          "description" : {
            "type" : "string"
          },
          "checkoutPageId" : {
            "type" : "string"
          },
          "termsUrl" : {
            "type" : "string"
          },
          "paymentMethods" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PaymentMethodSettingsTenantVO"
            }
          },
          "infoText" : {
            "type" : "string"
          },
          "confirmationPageText" : {
            "type" : "string"
          },
          "payAtOrder" : {
            "type" : "boolean"
          },
          "accountTypeCustomer" : {
            "type" : "string",
            "enum" : [ "PREPAID", "POSTPAID" ]
          },
          "createCustomerLogin" : {
            "type" : "boolean"
          },
          "paymentPageText" : {
            "type" : "string"
          },
          "paymentSuccessText" : {
            "type" : "string"
          },
          "excludeCoupons" : {
            "type" : "boolean"
          },
          "prepaidChargeAmount" : {
            "type" : "number"
          },
          "autoActivation" : {
            "type" : "boolean"
          },
          "customConfirmationMailSubject" : {
            "type" : "string"
          },
          "customConfirmationMailBody" : {
            "type" : "string"
          },
          "orderButtonTextPrepended" : {
            "type" : "string"
          }
        }
      },
      "PaymentMethodSettingsTenantVO" : {
        "type" : "object",
        "properties" : {
          "paymentMethod" : {
            "type" : "string",
            "enum" : [ "BANKTRANSFER", "PAYPAL", "MONEYBOOKERS", "SOFORTUEBERWEISUNG", "SEPA_DEBIT", "CREDITCARD" ]
          },
          "active" : {
            "type" : "boolean"
          },
          "feeType" : {
            "type" : "string",
            "enum" : [ "NONE", "FIXED", "PERCENTAL" ]
          },
          "feePaymentDate" : {
            "type" : "string",
            "enum" : [ "IMMEDIATE", "END_OF_MONTH", "END_OF_QUARTER", "END_OF_YEAR" ]
          },
          "feeItem" : {
            "$ref" : "#/components/schemas/Item"
          },
          "feePercent" : {
            "type" : "integer",
            "format" : "int32"
          },
          "description" : {
            "type" : "string"
          },
          "paymentProvider" : {
            "type" : "string",
            "enum" : [ "WIRECARD", "PAYMILL", "HEIDELPAY", "ADYEN", "STRIPE", "FINAPI", "BRAINTREE", "UNZER" ]
          }
        }
      },
      "OrderItemWithPrices" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "type" : "number"
          },
          "itemType" : {
            "type" : "string",
            "enum" : [ "RECURRING", "ONETIME" ]
          },
          "name" : {
            "type" : "string"
          },
          "itemNumber" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "unit" : {
            "type" : "string",
            "enum" : [ "PIECE", "HOUR", "MINUTE", "SECOND", "DAY", "WEEK", "MONTH", "YEAR", "KWH" ]
          },
          "priceNet" : {
            "type" : "number"
          },
          "priceGross" : {
            "type" : "number"
          },
          "priceTotalNet" : {
            "type" : "number"
          },
          "priceTotalGross" : {
            "type" : "number"
          },
          "taxRate" : {
            "type" : "number"
          },
          "taxTotal" : {
            "type" : "number"
          }
        }
      },
      "PriceCalculationResultOrder" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OrderItemWithPrices"
            }
          },
          "sumRecurNet" : {
            "type" : "number"
          },
          "sumRecurGross" : {
            "type" : "number"
          },
          "sumOnetimeNet" : {
            "type" : "number"
          },
          "sumOnetimeGross" : {
            "type" : "number"
          },
          "currency" : {
            "type" : "string",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "amountFirstInvoice" : {
            "type" : "number"
          }
        }
      },
      "OrderTemplatePriceCalculationRequest" : {
        "required" : [ "country", "currency", "customerType" ],
        "type" : "object",
        "properties" : {
          "country" : {
            "type" : "string",
            "description" : "the country of the customer (iso code, e.g. DE)"
          },
          "customerType" : {
            "type" : "string",
            "description" : "b2b or b2c customer?",
            "enum" : [ "PRIVATE", "BUSINESS" ]
          },
          "euTaxId" : {
            "type" : "string",
            "description" : "the EU tax id of the customer"
          },
          "currency" : {
            "type" : "string",
            "description" : "the currency unit to present the prices for",
            "enum" : [ "EUR", "USD", "CHF", "GBP", "DKK", "NOK", "SEK", "BGN", "BYN", "CZK", "HRK", "HUF", "ISK", "PLN", "RON", "RUB", "UAH", "TRY" ]
          },
          "couponCode" : {
            "type" : "string",
            "description" : "coupon code of the customer if present"
          },
          "items" : {
            "type" : "array",
            "description" : "leave empty to use default items from template. otherwise specify item number and quantity of items from template to just calculate the defined items.",
            "items" : {
              "$ref" : "#/components/schemas/OrderItem"
            }
          }
        }
      },
      "ExportResult" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "enum" : [ "ACCOUNTING_EXPORT_LEXWARE", "ACCOUNTING_EXPORT_DATEV", "ACCOUNTING_EXPORT_DATEV_EXTF", "ACCOUNTING_ZM", "ACCOUNTING_MOSS", "DEBTOR_LIST_CSV", "REPORTING_CONTRACTS", "REPORTING_CUSTOMERS", "REPORTING_INVOICES", "REPORTING_CREDITNOTES", "REPORTING_ITEMS", "REPORTING_TRANSACTIONS", "REPORTING_ACTIVITIES", "REPORTING_SUBSCRIPTION_FORECAST", "REPORTING_SUBSCRIPTION_FORECAST_CONTRACT", "REPORTING_CONTRACT_CHANGES", "REPORTING_SUBSCRIPTIONITEMS" ]
          },
          "documentUuid" : {
            "type" : "string",
            "format" : "uuid"
          },
          "uuid" : {
            "type" : "string",
            "format" : "uuid"
          },
          "fileName" : {
            "type" : "string"
          },
          "reportStart" : {
            "type" : "string",
            "format" : "date-time"
          },
          "reportEnd" : {
            "type" : "string",
            "format" : "date-time"
          },
          "fileSizeBytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "contentType" : {
            "type" : "string"
          },
          "infoText" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "CREATED", "IN_PROGRESS", "OK", "ERROR" ]
          }
        }
      },
      "SubscriptionItemPriceCalculationRequest" : {
        "required" : [ "performanceDateStart" ],
        "type" : "object",
        "properties" : {
          "performanceDateStart" : {
            "type" : "string",
            "description" : "when will the service/article be used/booked?",
            "format" : "date"
          },
          "performanceDateEnd" : {
            "type" : "string",
            "description" : "enddate for the booking period. (optional)",
            "format" : "date"
          },
          "quantity" : {
            "type" : "number",
            "description" : "amount of the item to be booked (optional)"
          }
        }
      },
      "UserLoginSessionToken" : {
        "type" : "object",
        "properties" : {
          "sessionToken" : {
            "type" : "string",
            "description" : "session token for customercenter login",
            "readOnly" : true,
            "example" : "83814cf5-8215-48ba-bf53-94e0dd19ae42"
          },
          "created" : {
            "type" : "string",
            "description" : "date created",
            "format" : "date-time",
            "readOnly" : true
          },
          "login" : {
            "type" : "string",
            "description" : "user name",
            "readOnly" : true,
            "example" : "dummyUsername"
          },
          "loginUrl" : {
            "type" : "string",
            "description" : "login URL for the customercenter, complete with this session token",
            "readOnly" : true,
            "example" : "https://mycompanyname.vertragscenter.example/public/login.html?sessionToken=83814cf5-8215-48ba-bf53-94e0dd19ae42"
          }
        }
      },
      "UserLogin" : {
        "type" : "object",
        "properties" : {
          "login" : {
            "type" : "string",
            "description" : "user name",
            "readOnly" : true,
            "example" : "dummyUsername"
          },
          "loginCounter" : {
            "type" : "integer",
            "description" : "number of successful logins",
            "format" : "int64",
            "readOnly" : true
          },
          "loginFailedCounter" : {
            "type" : "integer",
            "description" : "number of failed login attempts",
            "format" : "int64",
            "readOnly" : true
          },
          "creationDate" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "lastLogin" : {
            "type" : "string",
            "description" : "date/time of last successful login",
            "format" : "date-time",
            "readOnly" : true
          },
          "state" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "ACTIVE", "INACTIVE" ]
          },
          "customerNumber" : {
            "type" : "string",
            "description" : "customer number of the associated customer",
            "readOnly" : true,
            "example" : "K1234"
          }
        }
      },
      "UserLoginActionRequest" : {
        "type" : "object",
        "properties" : {
          "notifyMail" : {
            "type" : "boolean",
            "description" : "notify customer by mail? default=true",
            "example" : true
          }
        }
      },
      "UserLoginActionPasswordRequest" : {
        "type" : "object",
        "properties" : {
          "notifyMail" : {
            "type" : "boolean",
            "description" : "notify customer by mail? default=true",
            "example" : true
          },
          "password" : {
            "type" : "string",
            "description" : "password - if empty, password will be generated",
            "example" : "asdfASDF123"
          }
        }
      },
      "UserLoginCreateRequest" : {
        "required" : [ "customerNumber", "userLoginName" ],
        "type" : "object",
        "properties" : {
          "notifyMail" : {
            "type" : "boolean",
            "description" : "notify customer by mail? default=true",
            "example" : true
          },
          "password" : {
            "type" : "string",
            "description" : "password - if empty, password will be generated",
            "example" : "asdfASDF123"
          },
          "userLoginName" : {
            "maxLength" : 100,
            "minLength" : 0,
            "type" : "string",
            "description" : "the login name",
            "example" : "dummyUsername"
          },
          "customerNumber" : {
            "type" : "string",
            "description" : "the customer number of the associated customer",
            "example" : "K1234"
          }
        }
      },
      "WebhookConfig" : {
        "type" : "object",
        "properties" : {
          "uuid" : {
            "type" : "string",
            "description" : "Leave empty when creating new webhooks",
            "format" : "uuid"
          },
          "hookUrl" : {
            "type" : "string"
          },
          "hookEmail" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "active" : {
            "type" : "boolean"
          },
          "events" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "CUSTOMER_CREATED", "CUSTOMER_CHANGED", "CUSTOMER_DELETED", "CUSTOMER_CHANGEREQUEST_CREATED", "ITEM_CREATED", "ITEM_CHANGED", "ITEM_DELETED", "CONTRACT_CREATED", "CONTRACT_ACTIVATED", "CONTRACT_CHANGED", "CONTRACT_DELETED", "CONTRACT_TERMINATED", "CONTRACT_TERMINATION_UNDONE", "CONTRACT_ENDED", "CONTRACT_ATTACHMENT_CREATED", "CONTRACT_SMALL_UPGRADE", "CONTRACT_BIG_UPGRADE", "CONTRACT_RECURRING_PAYMENT_PSP_ERROR", "INVOICE_CREATED", "INVOICE_PAYMENT_RECEIVED", "INVOICE_CHARGEBACK", "INVOICECORRECTION_CREATED", "CREDITNOTE_PAYOUT_PROCESSED", "CREDITNOTE_CREATED", "CREDITNOTECORRECTION_CREATED", "DUNNING_CREATED", "ORDER_RECEIVED", "ORDER_PSP_EVENT", "ORDER_PROCESSED", "ORDER_CANCELLED", "ACTIVITY_CREATED", "USTID_CHECK_FAILED", "TESTHOOK", "CUSTOMER_ACCOUNT_CREATED", "CUSTOMER_ACCOUNT_CHANGED", "USERLOGINSESSIONTOKEN_CREATED" ]
            }
          }
        }
      }
    },
    "securitySchemes" : {
      "api-key" : {
        "type" : "apiKey",
        "name" : "api-key",
        "in" : "header"
      }
    }
  }
}