{
  "openapi": "3.0.0",
  "info": {
    "title": "Severa Public Rest API Documentation",
    "description": "The API uses OAuth2 client creadentials flow. To get the Bearer token for the resources you have to request the token by using route '/login/oauth/token', found from Authentication controller.\r\n\r\nYou need to provide a Client_Id, client_secret and scope needed. The client_id and client_secret can be obtained from Severa UI Rest Api settings section.\r\n\r\nAfter authentication, calls need to use the Bearer token as authorization header (Bearer {accessToken}).\r\n\r\nThe access token can be refreshed from '/login/oauth/token' route using the refresh token grant type and token which was obtained from the authentication.\r\n\r\n",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.severa.visma.com/rest-api"
    }
  ],
  "paths": {
    "/v1/addresses": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get the addresses.",
        "operationId": "Addresses_GetAddresses",
        "parameters": [
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get addresses that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddressModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/addresses/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get address by ID.",
        "operationId": "Addresses_GetAddress",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the address.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "AddressModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Delete an address.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if address can't be found.",
        "operationId": "Addresses_DeleteAddress",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the address to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "AddressModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Update (Patch) an address or a part of it.",
        "operationId": "Addresses_PatchAddress",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the address.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "AddressModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of AddressModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated addresses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddressModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/addresses": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get customer's addresses",
        "operationId": "Addresses_GetCustomerAddresses",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "ID for the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "Addresses for the customer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddressModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Insert an address.",
        "operationId": "Addresses_PostCustomerAddress",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "ID of the customer to add the address for.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          }
        ],
        "requestBody": {
          "x-name": "address",
          "description": "AddressModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/AddressModel"
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "201": {
            "description": "Created address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/contactpersons/{contactGuid}/addresses": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get contact person's address",
        "operationId": "Addresses_GetContactAddress",
        "parameters": [
          {
            "name": "contactGuid",
            "in": "path",
            "required": true,
            "description": "ID for the contact person",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddressModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/businessunits": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the BusinessUnits",
        "operationId": "BusinessUnits_GetBusinessUnits",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all BusinessUnits, if given as true return only active BusinessUnits, if given as false returns only inactive BusinessUnits",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "companyGuid",
            "in": "query",
            "description": "Optional: ID of the company to which the business units belong.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "CompanyModel"
          },
          {
            "name": "companyCountryGuid",
            "in": "query",
            "description": "Optional: ID of the country in which the company of business units is located.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3,
            "x-relation-guid": "CountryModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from business unit name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get business units that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "code",
            "in": "query",
            "description": "Optional: Code of the business unit.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "name",
            "in": "query",
            "description": "Optional: Name of the business unit.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 9
          }
        ],
        "responses": {
          "200": {
            "description": "All the BusinessUnits",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BusinessUnitModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a business unit.",
        "operationId": "BusinessUnits_PostBusinessUnit",
        "requestBody": {
          "x-name": "model",
          "description": "BusinessUnitModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/BusinessUnitModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created business unit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessUnitModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/businessunits/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get businessUnit by ID.",
        "operationId": "BusinessUnits_GetBusinessUnit",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the businessUnit.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "BusinessUnitModel"
          }
        ],
        "responses": {
          "200": {
            "description": "BusinessUnit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessUnitModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an businessUnit or a part of it.",
        "operationId": "BusinessUnits_PatchBusinessUnit",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the businessUnit.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "BusinessUnitModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of BusinessUnitModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated business units.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BusinessUnitModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a business unit.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if business unit can't be found.",
        "operationId": "BusinessUnits_DeleteBusinessUnit",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the business unit to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the business unit to which to move usages of this business unit. Default null. The new business unit must be in the same Organization company, otherwise the usages won't be moved. If business unit is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "BusinessUnitModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/communicationtypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all communication types.",
        "operationId": "CommunicationTypes_GetCommunicationTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "Filter the communication types. If true/false, only the active/inactive ones are returned. If null, all the communication types are returned.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from communication type name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "Projects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommunicationTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a communication type.",
        "operationId": "CommunicationTypes_PostCommunicationType",
        "requestBody": {
          "x-name": "communicationTypeModel",
          "description": "CommunicationTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CommunicationTypeModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created communication type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommunicationTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/communicationtypes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get communication type by ID.",
        "operationId": "CommunicationTypes_GetCommunicationType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID used to get the communication type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CommunicationTypeModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommunicationTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a communication type or a part of it.",
        "operationId": "CommunicationTypes_PatchCommunicationType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the communication type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CommunicationTypeModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of CommunicationTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "Updated communication model.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommunicationTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a communication type.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "CommunicationTypes_DeleteCommunicationType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the communication type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CommunicationTypeModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/contactcommunications": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get all contact communications.",
        "operationId": "ContactCommunications_GetCommunications",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all contact communications, if given as true return only active contact communications, if given as false returns only inactive contact communications.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from contact communication value.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get contact communications that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "All the contact communications.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactCommunicationModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Insert a communication for a contact.",
        "operationId": "ContactCommunications_PostContactCommunication",
        "requestBody": {
          "x-name": "contactCommunication",
          "description": "ContactCommunicationModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ContactCommunicationModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted contact communication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactCommunicationModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/contactcommunications/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get contact communication by ID.",
        "operationId": "ContactCommunications_GetCommunication",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the contact communication.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactCommunicationModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact communication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactCommunicationModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Update (Patch) a contact's communication or a part of it.",
        "operationId": "ContactCommunications_PatchContactCommunication",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the contact's communication.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactCommunicationModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ContactCommunicationModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "Updated contact communication model.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactCommunicationModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Deletes contact's communication.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ContactCommunications_DeleteContactCommunication",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the contact's communication.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactCommunicationModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/contacts/{contactGuid}/contactcommunications": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get all communications for a contact.",
        "operationId": "ContactCommunications_GetCommunications2",
        "parameters": [
          {
            "name": "contactGuid",
            "in": "path",
            "required": true,
            "description": "Whose communications are requested.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all contact communications, if given as true return only active contact communications, if given as false returns only inactive contact communications.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "All the contact communications.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactCommunicationModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/contactroles": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get contact roles.",
        "operationId": "ContactRoles_GetContactRoles",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all contact roles, if given as true return only active contact roles, if given as false returns only inactive contact roles.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from contact role name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "All the contact roles.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactRoleModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a contact role.",
        "operationId": "ContactRoles_PostContactRole",
        "requestBody": {
          "x-name": "contactRole",
          "description": "ContactRoleModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ContactRoleModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created contact role.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactRoleModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/contactroles/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get contact role by ID.",
        "operationId": "ContactRoles_GetContactRole",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the contact role.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactRoleModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ContactRoleModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactRoleModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a contact role or a part of it.",
        "operationId": "ContactRoles_PatchContactRole",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the contact role.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactRoleModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ContactRoleModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated contact role.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactRoleModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a contact role.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if contact role can't be found.",
        "operationId": "ContactRoles_DeleteContactRole",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the contact role to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactRoleModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the contact role to which to move usages of this contact role. Default null. If contact role is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "ContactRoleModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/contactpersons": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get the contact persons for a customer.",
        "operationId": "Contacts_GetCustomerContacts",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "Customer guid used to get the contact persons.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Contact persons, if given as true return only active Contact persons, if given as false returns only inactive Contact persons.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from contact person's name or communication method (i.e. phone number or email address).",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "List of contacts for a customer.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/contactpersons": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get all the contact persons.",
        "operationId": "Contacts_GetContacts",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Contact persons, if given as true return only active Contact persons, if given as false returns only inactive Contact persons.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from contact person's name or communication method (i.e. phone number or email address).",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "searchCriterias",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Search criterias.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndObject"
              }
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=FirstName&sortings[0].value=Desc &sortings[1].key=LastName&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get contact persons that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "changedSinceOptions",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Extend changedSince parameter by searching from linked resources.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/ContactChangedSinceSearchExtensionOptions"
              }
            },
            "x-position": 8
          }
        ],
        "responses": {
          "200": {
            "description": "List of contacts for a customer.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Insert a contact.",
        "operationId": "Contacts_PostContact",
        "requestBody": {
          "x-name": "contact",
          "description": "ContactModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ContactModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted contact.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/contactpersons/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get contact by ID.",
        "operationId": "Contacts_GetContact",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the contact.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Update (Patch) an contact or a part of it.",
        "operationId": "Contacts_PatchContact",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the contact.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ContactModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated contact persons.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Deletes a contact.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "Contacts_DeleteContact",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the contact.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/costaccounts": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get cost accounts.",
        "operationId": "CostAccounts_GetCostAccounts",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all cost accounts, if given as true return only active cost accounts, if given as false returns only inactive cost accounts.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from cost account name or identifier.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc &sortings[1].key=Identifier&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "All the cost accounts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CostAccountModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a cost account.",
        "operationId": "CostAccounts_PostCostAccount",
        "requestBody": {
          "x-name": "costAccount",
          "description": "CostAccountModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CostAccountModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created cost account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostAccountModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/costaccounts/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get cost account by Guid.",
        "operationId": "CostAccounts_GetCostAccount",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Cost account's guid.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CostAccountModel"
          }
        ],
        "responses": {
          "200": {
            "description": "CostAccountModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostAccountModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a cost account or a part of it.",
        "operationId": "CostAccounts_PatchCostAccount",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the cost account.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CostAccountModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of CostAccountModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated cost account.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CostAccountModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a cost account.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if cost account can't be found.",
        "operationId": "CostAccounts_DeleteCostAccount",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the cost account to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CostAccountModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/costcenters": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get cost centers.",
        "operationId": "CostCenters_GetCostCenters",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all cost centers, if given as true return only active cost centers, if given as false returns only inactive cost centers.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from cost center name or identifier.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get cost centers that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          },
          {
            "name": "identifier",
            "in": "query",
            "description": "Optional: Identifier of the cost center.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "name",
            "in": "query",
            "description": "Optional: Name of the cost center.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 9
          }
        ],
        "responses": {
          "200": {
            "description": "All the cost centers.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CostCenterModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a cost center.",
        "operationId": "CostCenters_PostCostCenter",
        "requestBody": {
          "x-name": "costCenter",
          "description": "CostCenterModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CostCenterModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created cost center.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostCenterModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/costcenters/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get cost center by ID.",
        "operationId": "CostCenters_GetCostCenter",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the cost center.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CostCenterModel"
          }
        ],
        "responses": {
          "200": {
            "description": "CostCenterModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostCenterModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a cost center or a part of it.",
        "operationId": "CostCenters_PatchCostCenter",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the cost center.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CostCenterModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of CostCenterModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated cost center.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CostCenterModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a cost center.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if cost center can't be found.",
        "operationId": "CostCenters_DeleteCostCenter",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the cost center to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CostCenterModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/localization/countries": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the Countries.",
        "operationId": "Countries_GetCountries",
        "responses": {
          "200": {
            "description": "All the Countries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CountryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/countries/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get country by ID.",
        "operationId": "Countries_GetCountry",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the country.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CountryModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Country.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountryModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/countries/{countryGuid}/countryregions": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the Country regions for a country.",
        "operationId": "Countries_GetCountryRegions",
        "parameters": [
          {
            "name": "countryGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the country.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CountryModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the CountryRegions of the country.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CountryRegionModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/countryregions/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get country region by ID.",
        "operationId": "Countries_GetCountryRegion",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the country region.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CountryRegionModel"
          }
        ],
        "responses": {
          "200": {
            "description": "CountryRegion.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountryRegionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/customermarketsegments": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get the Market Segments for a customer.",
        "operationId": "CustomerMarketSegments_GetCustomerMarketSegments",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "ID of the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "includeMarketSegmentsFromRegistry",
            "in": "query",
            "description": "Optional: Return also the markets segments that are not in use for the customer.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "List of Customer Market Segments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerMarketSegmentModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/customermarketsegments": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get all Customer Market Segments.",
        "operationId": "CustomerMarketSegments_GetAllCustomerMarketSegments",
        "parameters": [
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from customer market segment name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "parentMarketSegmentGuid",
            "in": "query",
            "description": "Optional: Fetches all children of a parent based on parent market segment guid.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4,
            "x-relation-guid": "CustomerMarketSegmentModel"
          },
          {
            "name": "includeParentLevel",
            "in": "query",
            "description": "Optional: Returns only child segments when false. Has no effect if parentMarketSegmentGuid parameter is defined. Default = true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "List of Customer Market Segments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerMarketSegmentModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Add a market segment for customer.",
        "operationId": "CustomerMarketSegments_PostCustomerMarketSegment",
        "requestBody": {
          "x-name": "customerMarketSegment",
          "description": "CustomerMarketSegmentModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomerMarketSegmentModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created customer market segment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMarketSegmentModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/customermarketsegments/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get the customer market segment.",
        "operationId": "CustomerMarketSegments_GetCustomerMarketSegment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Customer market segment guid.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerMarketSegmentModel"
          }
        ],
        "responses": {
          "200": {
            "description": "List of Customer Market Segments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMarketSegmentModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Deletes a customer market segment.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if customer market segment can't be found.",
        "operationId": "CustomerMarketSegments_DeleteCustomerMarketSegment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the customer market segment to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerMarketSegmentModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/files/{guid}/filedata": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get file data by ID.",
        "description": "Returns binary data, which contains content with type given in Content-Type header.",
        "operationId": "FileData_GetDataForFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FileModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Get file data by ID",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/files/{guid}": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get file by ID.",
        "operationId": "Files_GetFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FileModel"
          },
          {
            "name": "includeDataInResponse",
            "in": "query",
            "description": "Is data included in response as base64 string.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "File.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/files": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get all files of a project by its id.",
        "operationId": "Files_GetProjectFiles",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the project used to get the files.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc&sortings[1].key=Number&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "File.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "FilesWrite"
        ],
        "summary": "Insert a project file.",
        "description": "Supports multiple files and meta data. Expects MIME multipart content, with optional FileModel JSON content before binary file data. POST /projects/{projectGuid}/files HTTP/1.1 Authorization: Bearer your_auth_token Content-Type: multipart/related; boundary=randomboundarystring Content-Length: number_of_bytes_in_entire_request_body --randomboundarystring Content-Type: application/json {\"Description\" : \"SomeFileDescription\", \"Name\" : \"somefile.ext\"} --randomboundarystring Content-Type: 'image/jpeg' or 'link' Binary data --randomboundarystring--.",
        "operationId": "Files_PostProjectFile",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the project to insert file to.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "includeDataInResponse",
            "in": "query",
            "description": "Is data included in response as base64 string.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          }
        ],
        "responses": {
          "201": {
            "description": "Created file metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/projectfiles/{guid}": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get project file by ID.",
        "operationId": "Files_GetProjectFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the project file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectFileModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ProposalFile.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectFileModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "FilesDelete"
        ],
        "summary": "Deletes a project file.",
        "description": "Deletes both project file and file data. Returns: No Content (204) if succeeded.",
        "operationId": "Files_DeleteProjectFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectFileModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectlinks": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Add a link to a project.",
        "operationId": "Files_PostProjectLink",
        "requestBody": {
          "x-name": "model",
          "description": "ProjectFileModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectFileModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created project file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectFileModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/files": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get all files of a invoice by its id.",
        "operationId": "Files_GetInvoiceFiles",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the invoice used to get the files.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "InvoiceFile.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceFileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicefiles/{guid}": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get invoice file by ID.",
        "operationId": "Files_GetInvoiceFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the invoice file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceFileModel"
          }
        ],
        "responses": {
          "200": {
            "description": "InvoiceFile.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceFileModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/travelexpensesfiles": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get all files of all travel expenses of the user.",
        "operationId": "Files_GetUsersTravelExpensesFiles",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the user used to get the files attached to travel expenses.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Optional: Start date to from which to check travel expenses.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Optional: End date to check for availability until travel expenses.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "TravelExpenseFile.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseFileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/projecttravelexpenses/{projectTravelExpenseGuid}/files": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get all files of a travel expense by its id.",
        "operationId": "Files_GetTravelExpenseFiles",
        "parameters": [
          {
            "name": "projectTravelExpenseGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the travel expense used to get the files.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTravelExpenseOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "TravelExpenseFile.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseFileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/projecttravelexpensefiles/{guid}": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get travel expense file by ID.",
        "operationId": "Files_GetTravelExpenseFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the travel expense file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTravelExpenseFileModel"
          }
        ],
        "responses": {
          "200": {
            "description": "InvoiceFile.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTravelExpenseFileModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/flextime": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get the flextime balance for a user for a specified date. Total balance is returned for the given date. Month balance is the balance for the month of the given date.\nValues are returned only if the advanced time tracking add-on is active.",
        "operationId": "Flextime_GetFlextime",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "Id of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "eventDate",
            "in": "query",
            "description": "Date for which to get the balance. Max 12 months into the future.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "FlextimeModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlextimeModel"
                }
              }
            }
          },
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/formattingcultures/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get formatting culture by ID.",
        "operationId": "FormattingCultures_GetFormattingCulture",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the formatting culture.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FormattingCultureModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Formatting culture.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FormattingCultureModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/heartbeat/server": {
      "get": {
        "tags": [
          "NoScope"
        ],
        "summary": "Can be used to check the status of the REST Api.",
        "description": "This does not require authentication.",
        "operationId": "HeartBeat_GetServerStatus",
        "responses": {
          "200": {
            "description": "Returns message \"Server is alive.\"",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        }
      }
    },
    "/heartbeat/database": {
      "get": {
        "tags": [
          "NoScope"
        ],
        "summary": "Can be used to check the status of the database.",
        "description": "This does not require authentication.",
        "operationId": "HeartBeat_GetDatabaseStatus",
        "responses": {
          "200": {
            "description": "Returns message \"Database is alive.\"",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        }
      }
    },
    "/heartbeat/authorized": {
      "get": {
        "tags": [
          "NoScope"
        ],
        "summary": "Returns http status code 204 for successful authentication.",
        "description": "This route requires authentication, returns 204 http status when successful.",
        "operationId": "HeartBeat_GetAuthorization",
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/v1/holidays": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get holidays.",
        "operationId": "Holidays_GetHolidays",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "description": "Optional: Holidays for this year only. Default: all years.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "maximum": 2075.0,
              "minimum": 1900.0,
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "countryGuid",
            "in": "query",
            "description": "Optional: Holidays for this country only. Default local.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "CountryModel"
          }
        ],
        "responses": {
          "200": {
            "description": "List of holidays. ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HolidayModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/holidaysbytimeperiod": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get holidays with start and end date.",
        "operationId": "Holidays_GetHolidaysByTimePeriod",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "description": "Start date for holidays.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "End date for holidays.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "countryGuid",
            "in": "query",
            "description": "Optional: Holidays for this country only. Default local.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3,
            "x-relation-guid": "CountryModel"
          }
        ],
        "responses": {
          "200": {
            "description": "List of holidays. ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HolidayModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/industries": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the industries.",
        "operationId": "Industries_GetIndustries",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all industries, if given as true return only active industries, if given as false returns only inactive industries.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from industry name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "All the industries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IndustryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert an industry.",
        "operationId": "Industries_PostIndustry",
        "requestBody": {
          "x-name": "model",
          "description": "IndustryModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/IndustryModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted industry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IndustryModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/industries/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get industry by ID.",
        "operationId": "Industries_GetIndustry",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the industry.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "IndustryModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Industry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IndustryModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an industry or a part of it.",
        "operationId": "Industries_PatchIndustry",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the industry.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "IndustryModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of IndustryModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated industries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IndustryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete an industry.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if industry can't be found.",
        "operationId": "Industries_DeleteIndustry",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the industry to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "IndustryModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the industry to which to move usages of this industry. Default null. If industry is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "IndustryModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{guid}": {
      "delete": {
        "tags": [
          "InvoicesDelete"
        ],
        "summary": "Delete an invoice.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if cost center can't be found.",
        "operationId": "Invoices_DeleteInvoice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the invoice to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:delete"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get invoice by ID",
        "operationId": "Invoices_GetInvoice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "InvoicesWrite"
        ],
        "summary": "Update (Patch) an invoice or a part of it",
        "operationId": "Invoices_PatchInvoice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the invoice",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of InvoiceInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of invoices",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:write"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{guid}/projects/{projectGuid}": {
      "delete": {
        "tags": [
          "InvoicesDelete"
        ],
        "summary": "Delete a project from invoice.",
        "operationId": "Invoices_DeleteProjectFromInvoice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "The invoice GUID.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "The project GUID.",
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": "The updated invoice."
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:delete"
            ]
          }
        ]
      }
    },
    "/v1/invoicestatuses": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get invoice statuses.",
        "operationId": "InvoiceStatuses_GetInvoiceStatuses",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "Filter the invoice statuses. If true/false, only the active/inactive ones are returned. If null, all the invoice statuses are returned.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from invoice status name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceStatusModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a invoice status.",
        "operationId": "InvoiceStatuses_PostInvoiceStatus",
        "requestBody": {
          "x-name": "model",
          "description": "InvoiceStatusModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/InvoiceStatusModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted invoice status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceStatusModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/invoicestatuses/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get Invoice status by ID.",
        "operationId": "InvoiceStatuses_GetInvoiceStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Invoice status.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceStatusModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Invoice status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceStatusModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an Invoice status or a part of it.",
        "operationId": "InvoiceStatuses_PatchInvoiceStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the Invoice status.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceStatusModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of InvoiceStatusModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated Invoice statuses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceStatusModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete an invoice status.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if invoice status can't be found.",
        "operationId": "InvoiceStatuses_DeleteInvoiceStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the invoice status to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceStatusModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/invoicetemplates": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get invoice templates.",
        "operationId": "InvoiceTemplates_GetInvoiceTemplates",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "InvoiceTemplatesModel.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceTemplateModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicetemplates/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get invoice template by ID.",
        "operationId": "InvoiceTemplates_GetInvoiceTemplate",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice template.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceTemplateModel"
          }
        ],
        "responses": {
          "200": {
            "description": "InvoiceTemplatesModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceTemplateModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{guid}/pdf": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get an invoice PDF.",
        "operationId": "Pdf_GetInvoicePdf",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "The invoice GUID.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "invoiceType",
            "in": "query",
            "description": "Optional: type of invoice.",
            "schema": {
              "default": "Invoice",
              "$ref": "#/components/schemas/InvoiceType"
            },
            "x-position": 2
          },
          {
            "name": "pdfGetOptions",
            "in": "query",
            "description": "Optional: what to include in the PDF. Defaults to InvoicePdfGetOptions.All.",
            "schema": {
              "default": "All",
              "$ref": "#/components/schemas/InvoicePdfGetOptions"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Get an invoice PDF",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/proposals/{guid}/pdf": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get a proposal PDF.",
        "operationId": "Pdf_GetProposalPdf",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "The proposal GUID.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Get a proposal PDF",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/travelreimbursements/{guid}/pdf": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get a travel reimbursement PDF.",
        "operationId": "Pdf_GetTravelReimbursementPdf",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "The travel reimbursement GUID.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Get a travel reimbursement PDF",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/permissionprofiles": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the Permission Profiles.",
        "operationId": "PermissionProfiles_GetPermissionProfiles",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Permission Profiles, if given as true return only active Permission Profiles, if given as false returns only inactive Permission Profiles.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from permission profile name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc&sortings[1].key=isActive&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "List of Permission Profiles.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PermissionProfileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/permissionprofiles/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get Permission Profile by ID.",
        "operationId": "PermissionProfiles_GetPermissionProfile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Permission Profile.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PermissionProfileModel"
          }
        ],
        "responses": {
          "200": {
            "description": "PermissionProfileModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PermissionProfileModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/pricelists/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get price list by GUID.",
        "operationId": "PriceLists_GetPriceList",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID used to get the price list.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PriceListModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/keywords": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the keywords.",
        "operationId": "Keywords_GetKeywords",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "description": "Optional: category of the keyword.",
            "schema": {
              "$ref": "#/components/schemas/KeywordCategory"
            },
            "x-position": 1
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Keywords, if given as true return only active Keywords, if given as false returns only inactive Keywords.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from keyword.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get keywords that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 7
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 8
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "Optional: Keyword name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 9
          }
        ],
        "responses": {
          "200": {
            "description": "All the Keywords.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KeywordModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a keyword.",
        "operationId": "Keywords_PostKeyword",
        "requestBody": {
          "x-name": "keyword",
          "description": "KeywordModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/KeywordModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created contact role.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeywordModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/keywords/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get keyword by ID.",
        "operationId": "Keywords_GetKeyword",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the keyword.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Keyword.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeywordModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a keyword or a part of it.",
        "operationId": "Keywords_PatchKeyword",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the keyword.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated keywords.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KeywordModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete keyword by ID. It will also be deleted from any entity it is used in (Project, etc.)",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "Keywords_DeleteKeyword",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the keyword.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "KeywordModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the keyword to which to move usages of this keyword. Default null. If keyword is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/contacts/{contactGuid}/keywords": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get all the keywords for contact.",
        "operationId": "Keywords_GetContactKeywords",
        "parameters": [
          {
            "name": "contactGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user whose keywords are requested.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Keywords, if given as true return only active Keywords, if given as false returns only inactive Keywords.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Keyword&sortings[0].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Keywords.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KeywordModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/keywords": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the keywords for project.",
        "operationId": "Keywords_GetProjectKeywords",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project for which keywords are requested.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Keywords, if given as true return only active Keywords, if given as false returns only inactive Keywords.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Keyword&sortings[0].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Keywords.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectKeywordModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/files/{fileGuid}/keywords": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get all the keywords for file.",
        "operationId": "Keywords_GetFileKeywords",
        "parameters": [
          {
            "name": "fileGuid",
            "in": "path",
            "required": true,
            "description": "ID of the file for which keywords are requested.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FileModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Keywords, if given as true return only active Keywords, if given as false returns only inactive Keywords.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Keyword&sortings[0].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Keywords.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FileKeywordModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/keywords": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get all the keywords for user.",
        "operationId": "Keywords_GetUserKeywords",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user for who keywords are requested.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Keywords, if given as true return only active Keywords, if given as false returns only inactive Keywords.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Keyword&sortings[0].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Keywords.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserKeywordModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/kpiformulas": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get saved KPI formulas.",
        "operationId": "KpiFormulas_GetKpiFormulas",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "description": "Optional: Category of KPI formula (Project, Invoice, User).",
            "schema": {
              "$ref": "#/components/schemas/KpiFormulaCategory"
            },
            "x-position": 1
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: return with given active status. Default is to return all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          },
          {
            "name": "includeDefinition",
            "in": "query",
            "description": "Optional: Include definition to response. Default false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 7
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get KPI formulas that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 8
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "KPI formulas.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KpiFormulaModelBase"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/leadsources": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the lead sources.",
        "operationId": "LeadSources_GetLeadSources",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all lead sources, if given as true return only active lead sources, if given as false returns only inactive lead sources.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from lead source name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "List of lead sources.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LeadSourceModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a lead source.",
        "operationId": "LeadSources_PostLeadSource",
        "requestBody": {
          "x-name": "model",
          "description": "LeadSourceModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/LeadSourceModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted lead source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadSourceModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/leadsources/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get lead source by ID.",
        "operationId": "LeadSources_GetLeadSource",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the lead source.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "LeadSourceModel"
          }
        ],
        "responses": {
          "200": {
            "description": "lead source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadSourceModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an lead source or a part of it.",
        "operationId": "LeadSources_PatchLeadSource",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the lead source.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "LeadSourceModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of LeadSourceModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated lead sources.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LeadSourceModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a lead source.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if lead source can't be found.",
        "operationId": "LeadSources_DeleteLeadSource",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the lead source to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "LeadSourceModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the lead source to which to move usages of this lead source. Default null. If industry is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "LeadSourceModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/marketsegments": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the Market Segments.",
        "operationId": "MarketSegments_GetMarketSegments",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Market Segments, if given as true return only active Market Segments, if given as false returns only inactive Market Segments.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from market segment name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "includeChildSegments",
            "in": "query",
            "description": "Optional: Include also child market segments. If false returns only parent segments. Default true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "List of Market Segments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MarketSegmentModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a market segment.",
        "operationId": "MarketSegments_PostMarketSegment",
        "requestBody": {
          "x-name": "marketSegment",
          "description": "MarketSegmentModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/MarketSegmentModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created market segment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketSegmentModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/marketsegments/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get Market Segment by ID.",
        "operationId": "MarketSegments_GetMarketSegment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Market Segment.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "MarketSegmentModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Market Segment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketSegmentModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an Market Segment or a part of it.",
        "operationId": "MarketSegments_PatchMarketSegment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the Market Segment.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "MarketSegmentModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of MarketSegmentModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated Market Segments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MarketSegmentModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a market segment.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if market segment can't be found.",
        "operationId": "MarketSegments_DeleteMarketSegment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the market segment to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "MarketSegmentModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the lead source to which to move usages of this market segment. Default null.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "MarketSegmentModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/organizationsettings": {
      "get": {
        "tags": [
          "OrganizationRead"
        ],
        "summary": "Get the settings of organization.",
        "operationId": "OrganizationSettings_GetOrganizationSettings",
        "responses": {
          "200": {
            "description": "Organization.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationSettingsModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "organization:read"
            ]
          }
        ]
      }
    },
    "/v1/productcategories": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get product categories.",
        "operationId": "ProductCategories_GetProductCategories",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Product categories, if given as true return only active Product categories, if given as false returns only inactive Product categories.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from product category name or code.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get product categories that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: ?sortings[0].key=Name&sortings[0].value=Desc &sortings[1].key=Code&sortings[1].value=Asc.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "Product categories.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductCategoryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a product category.",
        "operationId": "ProductCategories_PostProductCategory",
        "requestBody": {
          "x-name": "productCategory",
          "description": "ProductCategoryModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProductCategoryModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created product category.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCategoryModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/productcategories/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get product category by ID.",
        "operationId": "ProductCategories_GetProductCategory",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the product category.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductCategoryModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ProductCategoryModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCategoryModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a product category or a part of it.",
        "operationId": "ProductCategories_PatchProductCategory",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the product category.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductCategoryModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProductCategoryModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated product category.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductCategoryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a product category.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if product category can't be found.",
        "operationId": "ProductCategories_DeleteProductCategory",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the product category to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductCategoryModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectworktypes": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project work types.",
        "description": "This is the same as organization's list of work types, unless the project has some specific work types and \"UseWorktypesFromSetting\" in project model is set to false.",
        "operationId": "ProjectWorkTypes_GetProjectWorktypes",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "includeWorktypesFromRegistry",
            "in": "query",
            "description": "Include work types also from registry. If false, returns only project specific work types. Default false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all work types, if given as true return only active work types, if given as false returns only inactive work types.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from work type name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get project work types that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "A list of work types for the project.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectWorkTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projectworktypes": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Adds a work type to a project.",
        "description": "The \"UseWorktypesFromSetting\" flag for the Project should be false (the project should not use the organization list of work types).",
        "operationId": "ProjectWorkTypes_PostProjectWorktype",
        "requestBody": {
          "x-name": "projectWorkTypeModel",
          "description": "ProjectWorkTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectWorkTypeModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Added project work type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectWorkTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/projectworktypes/{guid}": {
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (patch) a project work type.",
        "description": "This currently can be used only to change the default work type in a project. The \"UseWorktypesFromSetting\" flag for the Project should be false (the project should not use the organization list of work types).",
        "operationId": "ProjectWorkTypes_PatchProjectWorktype",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project work type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectWorkTypeModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProjectWorkTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated project work types.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectWorkTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes a project work type.",
        "description": "Returns: No Content (204) if succeeded. The \"UseWorktypesFromSetting\" flag for the Project should be false (the project should not use the organization list of work types).",
        "operationId": "ProjectWorkTypes_DeleteProjectWorktype",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the project work type to remove.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectWorkTypeModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/salesaccounts": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get sales accounts.",
        "operationId": "SalesAccounts_GetSalesAccounts",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Sales accounts, if given as true return only active Sales accounts, if given as false returns only inactive Sales accounts.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from cost account name or identifier.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc &sortings[1].key=Identifier&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "All the sales accounts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesAccountModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a sales account.",
        "operationId": "SalesAccounts_PostSalesAccount",
        "requestBody": {
          "x-name": "salesAccount",
          "description": "SalesAccountModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/SalesAccountModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created sales account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesAccountModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/salesaccounts/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get sales account by ID.",
        "operationId": "SalesAccounts_GetSalesAccount",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the sales account.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "SalesAccountModel"
          }
        ],
        "responses": {
          "200": {
            "description": "SalesAccountModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesAccountModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a sales account or a part of it.",
        "operationId": "SalesAccounts_PatchSalesAccount",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the sales account.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "SalesAccountModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of SalesAccountModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated sales account.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesAccountModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a sales account.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if sales account can't be found.",
        "operationId": "SalesAccounts_DeleteSalesAccount",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the sales account to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "SalesAccountModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/salesstatustypes/{guid}": {
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete an sales status type.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if sales status type can't be found.",
        "operationId": "SalesStatusTypes_DeleteSalesStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the sales status type to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the sales status type to which to move usages of this sales status type. Default null. If sales status type is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get sales status type by ID",
        "operationId": "SalesStatusTypes_GetSalesStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the sales status type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Sales status type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesStatusTypeOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an sales status type or a part of it",
        "operationId": "SalesStatusTypes_PatchSalesStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the sales status type",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of salesStatusType",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated sales status types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesStatusTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/activities/{activityGuid}/activityparticipants": {
      "get": {
        "tags": [
          "ActivitiesRead"
        ],
        "summary": "Get participants for an activity",
        "operationId": "ActivityParticipants_GetActivityParticipants",
        "parameters": [
          {
            "name": "activityGuid",
            "in": "path",
            "required": true,
            "description": "ID of the activity",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ActivityParticipants for an activity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivityParticipantModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:read"
            ]
          }
        ]
      }
    },
    "/v1/activityparticipants/{guid}": {
      "get": {
        "tags": [
          "ActivitiesRead"
        ],
        "summary": "Get activity participant",
        "operationId": "ActivityParticipants_GetActivityParticipant",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the participant",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityParticipantModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ActivityParticipant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityParticipantModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ActivitiesWrite"
        ],
        "summary": "Update (Patch) a activity participant or a part of it",
        "description": "Only IsConfirmed property can be updated.",
        "operationId": "ActivityParticipants_PatchActivityParticipants",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the activity participant",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityParticipantModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ActivityParticipantModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated activity participants",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivityParticipantModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:write"
            ]
          }
        ]
      }
    },
    "/v1/activityparticipants": {
      "post": {
        "tags": [
          "ActivitiesWrite"
        ],
        "summary": "Adds an activity participant",
        "operationId": "ActivityParticipants_PostActivityParticipant",
        "requestBody": {
          "x-name": "activityParticipantModel",
          "description": "ActivityParticipantModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ActivityParticipantModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Added participant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityParticipantModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:write"
            ]
          }
        ]
      }
    },
    "/v1/activities/{activityGuid}/activityparticipants/{activityParticipantGuid}": {
      "delete": {
        "tags": [
          "ActivitiesDelete"
        ],
        "summary": "Delete activity participant.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if participant can't be found.",
        "operationId": "ActivityParticipants_DeleteActivityParticipant",
        "parameters": [
          {
            "name": "activityGuid",
            "in": "path",
            "required": true,
            "description": "ID of the activity from which to delete the participant. If an activity occurrence guid is given, this will create an exception to the recurring activity and delete the participant from that.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityModel"
          },
          {
            "name": "activityParticipantGuid",
            "in": "path",
            "required": true,
            "description": "ID of the participant",
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "ActivityParticipantModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:delete"
            ]
          }
        ]
      }
    },
    "/v1/guids/convert/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Convert a GUID format from legacy (SOAP) to new (REST).",
        "operationId": "Guids_ConvertGuid",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID to convert",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Conversion model",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GuidConversionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/guids/convert": {
      "post": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Convert a batch of GUIDs format from legacy (SOAP) to new (REST).",
        "operationId": "Guids_ConvertGuids",
        "requestBody": {
          "x-name": "guids",
          "description": "List of GUIDs to convert",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "List of conversion models",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GuidConversionModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/countries/{code2}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get a country by ISO Alpha-2 code",
        "operationId": "Countries_GetCountryByCode2",
        "parameters": [
          {
            "name": "code2",
            "in": "path",
            "required": true,
            "description": "Optional: ISO Alpha-2 code used to get a country.",
            "schema": {
              "type": "string",
              "maxLength": 2,
              "minLength": 2
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Country",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CountryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/countries/{code3}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get a country by ISO Alpha-3 code",
        "operationId": "Countries_GetCountryByCode3",
        "parameters": [
          {
            "name": "code3",
            "in": "path",
            "required": true,
            "description": "Optional: ISO Alpha-3 code used to get a country.",
            "schema": {
              "type": "string",
              "maxLength": 3,
              "minLength": 3
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Country",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CountryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/countries/{countryName}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get a country by name",
        "operationId": "Countries_GetCountryByName",
        "parameters": [
          {
            "name": "countryName",
            "in": "path",
            "required": true,
            "description": "Optional: English country name.",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Country",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CountryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/customercountrysettings": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get all the country settings for a customer.",
        "operationId": "CustomerCountrySettings_GetCustomerCountrySettings",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the Currencies.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCountrySettingsOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/customercountrysettings": {
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Insert a customer country setting.",
        "operationId": "CustomerCountrySettings_PostCustomerCountrySettings",
        "requestBody": {
          "x-name": "model",
          "description": "CustomerCountrySettingsModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomerCountrySettingsInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted customer country setting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCountrySettingsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/customercountrysettings/{guid}": {
      "patch": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Update (Patch) a customer country setting.",
        "operationId": "CustomerCountrySettings_PatchCustomerCountrySettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the customer country setting.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCountrySettingsOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of CustomerCountrySettingsModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated customer country settings.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCountrySettingsOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Deletes a customer country setting.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if customer country setting can't be found.",
        "operationId": "CustomerCountrySettings_DeleteCustomerCountrySetting",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the customer country setting.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCountrySettingsOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/customers/customproperties/{customPropertyGuid}/customercustompropertyselectionitems": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the customer custom properties.",
        "operationId": "CustomerCustomPropertySelectionItems_GetCustomerCustomPropertySelectionItems",
        "parameters": [
          {
            "name": "customPropertyGuid",
            "in": "path",
            "required": true,
            "description": "Custom property id used to get the customer custom property selection items.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only active or inactive selection items.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get custom property selection items that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCustomPropertySelectionItemOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/customproperties/customercustompropertyselectionitems/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get customer custom property selection item by ID.",
        "operationId": "CustomerCustomPropertySelectionItems_GetCustomerCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the customer custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCustomPropertySelectionItemOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCustomPropertySelectionItemOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a customer custom property selection item or a part of it.",
        "operationId": "CustomerCustomPropertySelectionItems_PatchCustomerCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the customer custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCustomPropertySelectionItemInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of CustomerCustomPropertySelectionItemInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated customer custom properties.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCustomPropertySelectionItemOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a customer custom property selection item.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "CustomerCustomPropertySelectionItems_DeleteCustomerCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the customer custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCustomPropertySelectionItemInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/customers/customproperties/customercustompropertyselectionitems": {
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a customer custom property selection item.",
        "operationId": "CustomerCustomPropertySelectionItems_PostCustomerCustomPropertySelectionItem",
        "requestBody": {
          "x-name": "customerCustomPropertySelectionItem",
          "description": "CustomPropertySelectionItemInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomerCustomPropertySelectionItemInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created customer custom property.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCustomPropertySelectionItemOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/invoicestatuses/{invoiceStatusGuid}/finvoices": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "operationId": "Finvoices_GetFinvoicesByInvoiceStatus",
        "parameters": [
          {
            "name": "invoiceStatusGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceStatusModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          },
          "200": {
            "description": "Exports all invoices by invoice status as stream of multiple Finvoices",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/finvoice": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "operationId": "Finvoices_GetFinvoiceByInvoiceGuid",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          },
          "200": {
            "description": "Exports single invoice as Finvoice",
            "content": {
              "application/soap+xml": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/flatrates": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get all flat rates",
        "operationId": "FlatRates_GetAllFlatRates",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get flat rates that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "invoiceGuid",
            "in": "query",
            "description": "Optional: Get flat rates by invoice guid. Default all.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4,
            "x-relation-guid": "InvoiceOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the flat rates",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlatRateOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "FeesWrite"
        ],
        "summary": "Insert a flat rate.",
        "operationId": "FlatRates_PostFlatRate",
        "requestBody": {
          "x-name": "flatRate",
          "description": "FlatRateModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/FlatRateInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created flat rate.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlatRateOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:write"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/flextimeadjustments": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get the Flextime Adjustments.",
        "operationId": "FlextimeAdjustments_GetFlextimeAdjustments",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user for whom to get the adjustments.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "List of Flextime Adjustments.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlextimeAdjustmentOutputModel"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/flextimeadjustments/{guid}": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get Flextime Adjustment by ID.",
        "operationId": "FlextimeAdjustments_GetFlextimeAdjustment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Flextime Adjustment.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FlextimeAdjustmentOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Flextime Adjustment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlextimeAdjustmentOutputModel"
                }
              }
            }
          },
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Update (Patch) an Flextime Adjustment or a part of it.",
        "operationId": "FlextimeAdjustments_PatchFlextimeAdjustment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the Flextime Adjustment.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FlextimeAdjustmentOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of FlextimeAdjustmentInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "Updated Flextime Adjustment.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlextimeAdjustmentOutputModel"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Delete an flextime adjustment.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if flextime adjustment can't be found.",
        "operationId": "FlextimeAdjustments_DeleteFlextimeAdjustment",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the flextime adjustment to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FlextimeAdjustmentOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      }
    },
    "/v1/flextimeadjustments": {
      "post": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Insert a flextime adjustment.",
        "operationId": "FlextimeAdjustments_PostFlextimeAdjustment",
        "requestBody": {
          "x-name": "flextimeAdjustment",
          "description": "FlextimeAdjustmentInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/FlextimeAdjustmentInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted FlextimeAdjustment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlextimeAdjustmentOutputModel"
                }
              }
            }
          },
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      }
    },
    "/v1/localization/formattingcultures": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the Formatting Cultures",
        "operationId": "FormattingCultures_GetFormattings",
        "responses": {
          "200": {
            "description": "All the Formatting Cultures",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FormattingCultureModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/keywords/{guid}": {
      "post": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Link existing keyword to user",
        "operationId": "Keywords_LinkKeywordToUser",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "201": {
            "description": "Created user keyword link.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserKeywordModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "UsersDelete"
        ],
        "summary": "Delete a keyword from the user",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if the keyword or the link can't be found.",
        "operationId": "Keywords_DeleteUserKeyword",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/keywords/{guid}": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Link existing keyword to project",
        "operationId": "Keywords_LinkKeywordToProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "201": {
            "description": "Created project keyword link.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectKeywordModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete a keyword from the project",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if the keyword or the link can't be found.",
        "operationId": "Keywords_DeleteProjectKeyword",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/contacts/{contactGuid}/keywords/{guid}": {
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Link existing keyword to contact",
        "operationId": "Keywords_LinkKeywordToContact",
        "parameters": [
          {
            "name": "contactGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "201": {
            "description": "Created contact keyword link.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactKeywordModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Delete a keyword from the contact",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if the keyword or the link can't be found.",
        "operationId": "Keywords_DeleteContactKeyword",
        "parameters": [
          {
            "name": "contactGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ContactModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/files/{fileGuid}/keywords/{guid}": {
      "post": {
        "tags": [
          "FilesWrite"
        ],
        "summary": "Link existing keyword to file",
        "operationId": "Keywords_LinkKeywordToFile",
        "parameters": [
          {
            "name": "fileGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "201": {
            "description": "Created file keyword link.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileKeywordModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "FilesDelete"
        ],
        "summary": "Delete a keyword from the file",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if the keyword or the link can't be found.",
        "operationId": "Keywords_DeleteFileKeyword",
        "parameters": [
          {
            "name": "fileGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FileModel"
          },
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "KeywordModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/customproperties/{customPropertyGuid}/projectcustompropertyselectionitems": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the project custom properties.",
        "operationId": "ProjectCustomPropertySelectionItems_GetProjectCustomPropertySelectionItems",
        "parameters": [
          {
            "name": "customPropertyGuid",
            "in": "path",
            "required": true,
            "description": "Custom property id used to get the project custom property selection items.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only active or inactive selection items.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get custom property selection items that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectCustomPropertySelectionItemOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/customproperties/projectcustompropertyselectionitems/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get project custom property selection item by ID.",
        "operationId": "ProjectCustomPropertySelectionItems_GetProjectCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the project custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectCustomPropertySelectionItemOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCustomPropertySelectionItemOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a project custom property selection item or a part of it.",
        "operationId": "ProjectCustomPropertySelectionItems_PatchProjectCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectCustomPropertySelectionItemInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectCustomPropertySelectionItemInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated project custom properties.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectCustomPropertySelectionItemOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a project custom property selection item.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectCustomPropertySelectionItems_DeleteProjectCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectCustomPropertySelectionItemInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/customproperties/projectcustompropertyselectionitems": {
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a project custom property selection item.",
        "operationId": "ProjectCustomPropertySelectionItems_PostProjectCustomPropertySelectionItem",
        "requestBody": {
          "x-name": "projectCustomPropertySelectionItem",
          "description": "CustomPropertySelectionItemInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectCustomPropertySelectionItemInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created project custom property.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCustomPropertySelectionItemOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/customers/customvalues": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get the customer custom values.",
        "operationId": "CustomerCustomValues_GetCustomersCustomValues",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only values of active or inactive custom properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "targets",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of target for which to get the values.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get custom values that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCustomValueOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Insert a customer custom value.",
        "description": "Value depends on the custom property type. For selection type, it should be an array of objects containing key field as the value identifier. For other types it should be a single value.",
        "operationId": "CustomerCustomValues_PostCustomerCustomValue",
        "requestBody": {
          "x-name": "customerCustomValue",
          "description": "CustomerCustomValueModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomerCustomValueModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created customer custom value.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCustomValueModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectinvoicesettings": {
      "get": {
        "tags": [
          "InvoicesRead",
          "ProjectsRead"
        ],
        "summary": "Get project invoice settings by project ID.",
        "operationId": "ProjectInvoiceSettings_GetProjectInvoiceSettings",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "The project invoice settings.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectInvoiceSettingsOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read",
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projectinvoicesettings/{guid}": {
      "get": {
        "tags": [
          "InvoicesRead",
          "ProjectsRead"
        ],
        "summary": "Get project invoice settings by ID.",
        "operationId": "ProjectInvoiceSettings_GetProjectInvoiceSetting",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project invoice settings.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectInvoiceSettingsOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "The project invoice settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvoiceSettingsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read",
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "InvoicesWrite",
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) project invoice settings.",
        "operationId": "ProjectInvoiceSettings_PatchProjectInvoiceSettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project invoice settings.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectInvoiceSettingsOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProjectInvoiceSettingsInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "The project invoice settings.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectInvoiceSettingsOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:write",
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "InvoicesDelete",
          "ProjectsDelete"
        ],
        "summary": "Delete an project invoice settings.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if project invoice settings can't be found.",
        "operationId": "ProjectInvoiceSettings_DeleteProjectInvoiceSettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the project invoice settings to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectInvoiceSettingsOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:delete",
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectinvoicesettings": {
      "post": {
        "tags": [
          "InvoicesWrite",
          "ProjectsWrite"
        ],
        "summary": "Create a new project invoice settings.",
        "operationId": "ProjectInvoiceSettings_PostProjectInvoiceSettings",
        "requestBody": {
          "x-name": "projectInvoiceSettings",
          "description": "Project invoice settings.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectInvoiceSettingsInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created project invoice settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvoiceSettingsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:write",
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectproducts": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project products",
        "description": "This is the same as organization's list of products, unless the project has some specific products and UseProductsFromSetting in project model is set to false.",
        "operationId": "ProjectProducts_GetProjectProducts",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "includeProductsFromRegistry",
            "in": "query",
            "description": "Optional: Includes products available from product registry",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "active",
            "in": "query",
            "description": "Fetch only active",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "A list of products for the project.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectProductOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes all project products of a project.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectProducts_DeleteAllProjectProducts",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the project from where project products to remove.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectproducts": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Adds a product to a project.",
        "operationId": "ProjectProducts_PostProjectProduct",
        "requestBody": {
          "x-name": "projectProductModel",
          "description": "projectProductModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectProductInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Added project product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectProductOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectworkhourprices": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the work hour prices for a project",
        "operationId": "ProjectWorkHourPrices_GetWorkHourPricesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Guid of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "fromPricelistOnly",
            "in": "query",
            "description": "If true return only prices from the price list, if false also returns prices from the products. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          },
          {
            "name": "isAvailable",
            "in": "query",
            "description": "Optional: If true, returns only prices that are available for the project, false returns price that are not available. Default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get project work hour prices that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "Projects",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectWorkHourPriceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projectworkhourprices/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project work hour price by ID",
        "operationId": "ProjectWorkHourPrices_GetProjectWorkHourPrice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the work hour price.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectWorkHourPriceOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectWorkHourPriceOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a work hour price or a part of it",
        "operationId": "ProjectWorkHourPrices_PatchProjectWorkHourPrice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the work hour price",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectWorkHourPriceOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProjectWorkHourPriceInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated work hour prices",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectWorkHourPriceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes a work hour price",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectWorkHourPrices_DeleteProjectWorkHourPrice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the work hour price.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectWorkHourPriceOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectworkhourprices": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a work hour price",
        "operationId": "ProjectWorkHourPrices_PostProjectWorkHourPrice",
        "requestBody": {
          "x-name": "workHourPrice",
          "description": "ProjectWorkHourPriceInputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectWorkHourPriceInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created work hour prices",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectWorkHourPriceOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/proposalsubtotals": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the proposal subtotals.",
        "operationId": "ProposalSubtotals_GetProposalSubtotals",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get proposal subtotals that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalSubtotalOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a proposal subtotal",
        "operationId": "ProposalSubtotals_PostProposalSubtotal",
        "requestBody": {
          "x-name": "proposalSubtotal",
          "description": "ProposalSubtotalModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProposalSubtotalInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created proposal subtotal.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalSubtotalOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/proposals/{proposalGuid}/proposalsubtotals": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the proposal subtotals for a proposal",
        "operationId": "ProposalSubtotals_GetProposalSubtotalsForProposal",
        "parameters": [
          {
            "name": "proposalGuid",
            "in": "path",
            "required": true,
            "description": "proposal id for which to get proposal subtotals.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalSubtotalOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/proposalsubtotals/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get Proposal subtotal by ID",
        "operationId": "ProposalSubtotals_GetProposalSubtotal",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Proposal subtotal.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalSubtotalInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal subtotal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalSubtotalOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a Proposal subtotal or a part of it",
        "description": "It is not possible to changed the proposalGuid for an existing proposal subtotal. Also, when a proposal subtotal is connected to a phase, the connection can only be broken if the phase is deleted.",
        "operationId": "ProposalSubtotals_PatchProposalSubtotal",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the Proposal subtotal",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalSubtotalInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProposalSubtotalModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated Proposal subtotals",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalSubtotalOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete a proposal subtotal",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if proposal subtotal can't be found.",
        "operationId": "ProposalSubtotals_DeleteProposalSubtotal",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the proposal subtotal to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalSubtotalInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/proposalfeerows": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the proposal fee rows.",
        "operationId": "ProposalFees_GetProposalFees",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get proposal fee rows that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal fee rows",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalFeeRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a proposal fee row.",
        "operationId": "ProposalFees_PostProposalFee",
        "requestBody": {
          "x-name": "proposalFee",
          "description": "ProposalFeeModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProposalFeeRowInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created proposal fee row.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalFeeRowOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/proposals/{proposalGuid}/proposalfeerows": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the proposal fee rows for a proposal",
        "operationId": "ProposalFees_GetProposalFeesForProposal",
        "parameters": [
          {
            "name": "proposalGuid",
            "in": "path",
            "required": true,
            "description": "proposal id for which to get proposal fees rows.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal fee rows",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalFeeRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/proposalfeerows/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the proposal fee rows by guid",
        "operationId": "ProposalFees_GetProposalFee",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "proposal fee row id to get",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalFeeRowInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal fee",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalFeeRowOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a proposal fee row or a part of it",
        "operationId": "ProposalFees_PatchProposalFee",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the proposal fee row",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalFeeRowInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProposalFeeModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "list of updated proposal fee rows",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalFeeRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete a proposal fee row",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if proposal fee row can't be found.",
        "operationId": "ProposalFees_DeleteProposalFee",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the proposal fee row to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalFeeRowInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/proposalstatuses": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the proposal statuses",
        "operationId": "ProposalStatuses_GetProposalStatuses",
        "parameters": [
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: If not given, return all proposal statuses, if given as true return only active proposal statuses, if given as false returns only inactive proposal statuses.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "proposalStatusName",
            "in": "query",
            "description": "Optional: Search by proposal status name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal statuses",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalStatusOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a proposal status",
        "operationId": "ProposalStatuses_PostProposalStatus",
        "requestBody": {
          "x-name": "model",
          "description": "ProposalStatusModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProposalStatusInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Inserted proposal status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalStatusOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/proposalstatuses/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get Proposal status by ID",
        "operationId": "ProposalStatuses_GetProposalStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Proposal status.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalStatusInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalStatusOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an Proposal status or a part of it",
        "operationId": "ProposalStatuses_PatchProposalStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the Proposal status",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalStatusInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProposalStatusModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated Proposal statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalStatusOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete an proposal status",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if proposal status can't be found.",
        "operationId": "ProposalStatuses_DeleteProposalStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the proposal status to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalStatusInputModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the proposal status to which to move usages of this proposal status. Default null. If proposal status is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "ProposalStatusInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/proposalstatuses/{guid}/usage": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get usage for an proposal status.",
        "operationId": "ProposalStatuses_GetUsage",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the proposal status.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalStatusInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Usage",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UsageModel2"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/proposals": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the proposals",
        "operationId": "Proposals_GetProposals",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get proposals that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a proposal.",
        "operationId": "Proposals_PostProposal",
        "requestBody": {
          "x-name": "proposal",
          "description": "ProposalInputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProposalInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created proposal.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/proposals": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the proposals for a project",
        "operationId": "Proposals_GetProposalsForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Project id for which to get proposals.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get proposals that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/proposals/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get Proposal by ID",
        "operationId": "Proposals_GetProposal",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Proposal.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a Proposal or a part of it",
        "operationId": "Proposals_PatchProposal",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Guid of the Proposal",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProposalInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated Proposals",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete a proposal",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if proposal can't be found.",
        "operationId": "Proposals_DeleteProposal",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Guid for the proposal to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/proposals/{guid}/proposalsettings": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get settings for a proposal",
        "operationId": "ProposalSettings_GetProposalSettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Proposal.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalSettingsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) proposal settings",
        "operationId": "ProposalSettings_PatchProposalSettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Guid of the Proposal",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProposalSettingsInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated Proposal settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalSettingsOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/proposalworkrows": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the proposal work rows.",
        "operationId": "ProposalWorkhours_GetProposalWorkHours",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get proposal work rows that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalWorkhourRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a proposal work row.",
        "operationId": "ProposalWorkhours_PostProposalWorkhour",
        "requestBody": {
          "x-name": "proposalWorkhour",
          "description": "ProposalWorkhourModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProposalWorkhourRowInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created proposal work row.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalWorkhourRowOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/proposals/{proposalGuid}/proposalworkrows": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the proposal work rows.",
        "operationId": "ProposalWorkhours_GetProposalWorkHoursForProposal",
        "parameters": [
          {
            "name": "proposalGuid",
            "in": "path",
            "required": true,
            "description": "proposal id for which to get proposal work rows.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal work rows.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalWorkhourRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/proposalworkrows/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the proposal work row by guid.",
        "operationId": "ProposalWorkhours_GetProposalWorkhour",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "proposal work row id to get.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalWorkhourRowOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "Proposal work row.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposalWorkhourRowOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a proposal work row or a part of it.",
        "operationId": "ProposalWorkhours_PatchProposalWorkhour",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the proposal work row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalWorkhourRowOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProposalWorkhourModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "updated proposal work row.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProposalWorkhourRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete a proposal work row.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if proposal work row can't be found.",
        "operationId": "ProposalWorkhours_DeleteProposalWorkhour",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the proposal work row to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProposalWorkhourRowOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/roleallocations": {
      "get": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get role allocations.",
        "operationId": "RoleAllocations_GetRoleAllocations",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "required": true,
            "description": "Starting date from which to get the role allocations. If end date is not specified on the role allocation then it will be compared with phase end date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Optional: Ending date to which to get the role allocations. If start date is not specified on the role allocation then it will be compared with phase start date.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "useSalesProbability",
            "in": "query",
            "description": "Optional: Calculates the hours based on sales probability set for the project. Default is true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 5
          },
          {
            "name": "roleGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Role IDs.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 6,
            "x-relation-guid": "RoleOutputModel"
          },
          {
            "name": "phaseGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Phase IDs.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 7,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Project IDs.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "RoleAllocationModel.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleAllocationOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ResourceallocationsWrite"
        ],
        "summary": "Insert a role allocation.",
        "operationId": "RoleAllocations_PostRoleAllocation",
        "requestBody": {
          "x-name": "roleAllocation",
          "description": "Role allocation to insert.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/RoleAllocationInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "RoleAllocationModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:write"
            ]
          }
        ]
      }
    },
    "/v1/roleallocations/{guid}": {
      "get": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get role allocation by GUID.",
        "operationId": "RoleAllocations_GetRoleAllocation",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID used to get the role allocation.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "RoleAllocationOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "RoleAllocationModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ResourceallocationsWrite"
        ],
        "summary": "Update (Patch) a role allocation.",
        "operationId": "RoleAllocations_PatchRoleAllocation",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the role allocation.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "RoleAllocationOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of RoleAllocationModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "RoleAllocationModel.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleAllocationOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ResourceallocationsDelete"
        ],
        "summary": "Delete a role allocation.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if role can't be found.",
        "operationId": "RoleAllocations_DeleteRoleAllocation",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the role allocation to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "RoleAllocationOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:delete"
            ]
          }
        ]
      }
    },
    "/v1/roles": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get roles.",
        "operationId": "Roles_GetRoles",
        "parameters": [
          {
            "name": "isActive",
            "in": "query",
            "description": "If not given, return all roles, if given as true return only active roles, if given as false returns only inactive roles.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get roles that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "All the roles.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a role.",
        "operationId": "Roles_PostRole",
        "requestBody": {
          "x-name": "role",
          "description": "RoleInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/RoleInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created role.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/roles/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get role by GUID.",
        "operationId": "Roles_GetRole",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the role.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "RoleOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "RoleOutputModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a role or a part of it.",
        "operationId": "Roles_PatchRole",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the role.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "RoleOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of RoleInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "list of updated roles.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a role.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if role can't be found.",
        "operationId": "Roles_DeleteRole",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the role to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "RoleOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectsalesnotes": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the sales notes of a case.",
        "operationId": "SalesNotes_GetProjectSalesNotes",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Project guid used to get the notes.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get sales notes that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "List of sales notes for a project.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectSalesNoteOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/customersalesnotes": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get the customer sales notes.",
        "operationId": "SalesNotes_GetCustomerSalesNotes",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "Customer guid used to get the notes.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get sales notes that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "List of sales notes for a customer.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerSalesNoteOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/salesnotes": {
      "get": {
        "tags": [
          "ProjectsRead",
          "CustomersRead"
        ],
        "summary": "Get the sales notes by customer guid.",
        "operationId": "SalesNotes_GetAllCustomerSalesNotes",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "Customer guid used to get the notes.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get sales notes that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "List of sales notes for a customer.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesNoteOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read",
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/projectsalesnotes/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project sales note by ID.",
        "operationId": "SalesNotes_GetProjectSalesNote",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the project sales note.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectSalesNoteOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectNote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectSalesNoteOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a project sales note or a part of it.",
        "operationId": "SalesNotes_PatchProjectSalesNote",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project sales note.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectSalesNoteOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of project sales note model.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated sales notes.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectSalesNoteOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes a project sales note.",
        "description": "Returns: No Content (204) if succeeded. OK (200) if note has child notes and can't be deleted. It is marked as IsDeleted = true. Not found (404) if note can't be found.",
        "operationId": "SalesNotes_DeleteProjectSalesNote",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project sales note.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectSalesNoteOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/customersalesnotes/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get customer sales note by ID.",
        "operationId": "SalesNotes_GetCustomerSalesNote",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the customer sales note.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerSalesNoteOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectNote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSalesNoteOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Update (Patch) a customer sales note or a part of it.",
        "operationId": "SalesNotes_PatchCustomerSalesNote",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the customer sales note.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerSalesNoteOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of customer sales note model.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated sales notes.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerSalesNoteOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Deletes a customer sales note.",
        "description": "Returns: No Content (204) if succeeded. OK (200) if note has child notes and can't be deleted. It is marked as IsDeleted = true. Not found (404) if note can't be found.",
        "operationId": "SalesNotes_DeleteCustomerSalesNote",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the customer sales note.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerSalesNoteOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectsalesnotes": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a project sales note.",
        "operationId": "SalesNotes_PostProjectSalesNotes",
        "requestBody": {
          "x-name": "salesNote",
          "description": "SalesNoteOutputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectSalesNoteInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created project sales note.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectSalesNoteOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/customersalesnotes": {
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Insert a customer sales note.",
        "operationId": "SalesNotes_PostCustomerSalesNotes",
        "requestBody": {
          "x-name": "salesNote",
          "description": "SalesNoteOutputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomerSalesNoteInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created customer sales note.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSalesNoteOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/users/customproperties": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the user custom properties.",
        "operationId": "UserCustomProperties_GetUserCustomProperties",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only active or inactive user custom properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "isInUse",
            "in": "query",
            "description": "Optional: Is the customer property used in any custom property usage.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get custom properties that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomPropertyOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a user custom property.",
        "operationId": "UserCustomProperties_PostUserCustomProperty",
        "requestBody": {
          "x-name": "customProperty",
          "description": "UserCustomPropertyModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/UserCustomPropertyInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created user custom property.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserCustomPropertyOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/users/customproperties/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get user custom property by ID.",
        "operationId": "UserCustomProperties_GetUserCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the user custom property.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomPropertyOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserCustomPropertyOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a user custom property or a part of it.",
        "operationId": "UserCustomProperties_PatchUserCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the user custom property Can also be comma separate list of IDs to patch multiple user custom properties with one call. When multiple IDs are given, returns model which has list of succeeded user custom properties and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomPropertyOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of UserCustomPropertyModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated user custom properties.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomPropertyOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a user custom property.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "UserCustomProperties_DeleteUserCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the user custom property.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomPropertyOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/customvalues": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the project custom values.",
        "operationId": "ProjectCustomValues_GetProjectsCustomValues",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only values of active or inactive custom properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "targets",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of target for which to get the values.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get custom values that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectCustomValueOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a project custom value.",
        "description": "Value depends on the custom property type. For selection type, it should be an array of objects containing key field as the value identifier. For other types it should be a single value.",
        "operationId": "ProjectCustomValues_PostProjectCustomValue",
        "requestBody": {
          "x-name": "projectCustomValue",
          "description": "ProjectCustomValueModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectCustomValueModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created project custom value.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectCustomValueModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/customvalues": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get the user custom values.",
        "operationId": "UserCustomValues_GetUserCustomValues",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only values of active or inactive user custom properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "targets",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of target for which to get the values.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get user custom values that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomValueOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/users/customvalues": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get the user custom values.",
        "operationId": "UserCustomValues_GetUsersCustomValues",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only values of active or inactive user custom properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "targets",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of target for which to get the values.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get user custom values that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomValueOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Insert a user custom value.",
        "description": "Value depends on the custom property type. For selection type, it should be an array of objects containing key field as the value identifier. For other types it should be a single value.",
        "operationId": "UserCustomValues_PostUserCustomValue",
        "requestBody": {
          "x-name": "userCustomValue",
          "description": "UserCustomValueModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/UserCustomValueInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created user custom value.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomValueOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      }
    },
    "/v1/users/customvalues/{guid}": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get user custom value by ID.",
        "operationId": "UserCustomValues_GetUserCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the user custom value.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomValueOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserCustomValueOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Update (Patch) a user custom value or a part of it.",
        "operationId": "UserCustomValues_PatchUserCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the user custom value Can also be comma separate list of IDs to patch multiple user custom values with one call. When multiple IDs are given, returns model which has list of succeeded user custom values and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomValueOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of UserCustomValueModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated user custom values.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomValueOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "UsersDelete"
        ],
        "summary": "Deletes a user custom value.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "UserCustomValues_DeleteUserCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the user custom value.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomValueOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:delete"
            ]
          }
        ]
      }
    },
    "/v1/users/customproperties/{customPropertyGuid}/usercustompropertyselectionitems": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the user custom properties.",
        "operationId": "UserCustomPropertySelectionItems_GetUserCustomPropertySelectionItems",
        "parameters": [
          {
            "name": "customPropertyGuid",
            "in": "path",
            "required": true,
            "description": "Custom property id used to get the user custom property selection items.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Get only active or inactive selection items.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get custom property selection items that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomPropertySelectionItemOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/users/customproperties/usercustompropertyselectionitems/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get user custom property selection item by ID.",
        "operationId": "UserCustomPropertySelectionItems_GetUserCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the user custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomPropertySelectionItemOutputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserCustomPropertySelectionItemOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a user custom property selection item or a part of it.",
        "operationId": "UserCustomPropertySelectionItems_PatchUserCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the user custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomPropertySelectionItemInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of UserCustomPropertySelectionItemInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated user custom properties.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserCustomPropertySelectionItemOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a user custom property selection item.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "UserCustomPropertySelectionItems_DeleteUserCustomPropertySelectionItem",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the user custom property selection item.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserCustomPropertySelectionItemInputModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/users/customproperties/usercustompropertyselectionitems": {
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a user custom property selection item.",
        "operationId": "UserCustomPropertySelectionItems_PostUserCustomPropertySelectionItem",
        "requestBody": {
          "x-name": "userCustomPropertySelectionItem",
          "description": "UserPropertySelectionItemInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/UserCustomPropertySelectionItemInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created user custom property.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserCustomPropertySelectionItemOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/workcontracts/{guid}": {
      "get": {
        "tags": [
          "SettingsRead",
          "UsersRead"
        ],
        "summary": "Get work contract by ID.",
        "operationId": "WorkContracts_GetWorkContract",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the work contract.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkContractOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkContractOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          },
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite",
          "UsersWrite"
        ],
        "summary": "Update (Patch) a work contract or a part of it.",
        "operationId": "WorkContracts_PatchWorkContract",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the work contract.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkContractOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of WorkContractOutputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated work contract.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkContractOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          },
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete",
          "UsersDelete"
        ],
        "summary": "Delete a work contract.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if work contract can't be found.",
        "operationId": "WorkContracts_DeleteWorkContract",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the work contract to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkContractOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          },
          {
            "OAuth2": [
              "users:delete"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/workcontracts/current": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Gets current work contract for the user",
        "operationId": "WorkContracts_GetCurrentWorkContractForUser",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "Id of the user",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Work contracts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkContractOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/workcontracts": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get all the work contracts for the user.",
        "operationId": "WorkContracts_GetWorkContractsForUser",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "Id of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Work contracts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkContractOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/workcontracts": {
      "post": {
        "tags": [
          "SettingsWrite",
          "UsersWrite"
        ],
        "summary": "Insert a work contract.",
        "operationId": "WorkContracts_PostWorkContract",
        "parameters": [
          {
            "name": "resetFlextime",
            "in": "query",
            "description": "Optional. Reset flextime to zero when new work contract starts or keep the flextime value. Default true = reset flextime.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "workContract",
          "description": "WorkContractOutputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/WorkContractInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created work contract.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkContractOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          },
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      }
    },
    "/v1/workhourprices/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get work hour price by ID.",
        "operationId": "WorkHourPrices_GetWorkHourPrice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the work hour price.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkHourPriceOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkHourPriceOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/pricelistversions/{pricelistVersionGuid}/workhourprices": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the workHourPrices for a price list version.",
        "operationId": "WorkHourPrices_GetWorkHourPrices",
        "parameters": [
          {
            "name": "pricelistVersionGuid",
            "in": "path",
            "required": true,
            "description": "Price list version identifier.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PricelistVersionOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page..",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get prices that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "workHourPrices.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkHourPriceOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/customproperties": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the customer custom properties.",
        "operationId": "CustomerCustomProperties_GetCustomerCustomProperties",
        "parameters": [
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "active",
            "in": "query",
            "description": "Optional: Get only active or inactive customer properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from custom property name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "isInUse",
            "in": "query",
            "description": "Optional: Is the customer property used in any custom property usage.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc&sortings[1].key=Number&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomPropertyModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a customer custom property.",
        "operationId": "CustomerCustomProperties_PostCustomerCustomProperty",
        "requestBody": {
          "x-name": "customProperty",
          "description": "CustomerCustomPropertyModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomPropertyModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created customer custom property.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomPropertyModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/customers/customproperties/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get customer custom property by ID.",
        "operationId": "CustomerCustomProperties_GetCustomerCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the customer custom property.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomPropertyModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a customer custom property or a part of it.",
        "operationId": "CustomerCustomProperties_PatchCustomerCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the customer custom property Can also be comma separate list of IDs to patch multiple customer custom properties with one call. When multiple IDs are given, returns model which has list of succeeded customer custom properties and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of CustomerCustomPropertyModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated customer custom properties.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomPropertyModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a customer custom property.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "CustomerCustomProperties_DeleteCustomerCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the customer custom property.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/customvalues": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get the customer custom values.",
        "operationId": "CustomerCustomValues_GetCustomerCustomValues",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "ID of the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "active",
            "in": "query",
            "description": "Optional: Get only values of active or inactive customer custom properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "target",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "List of target for which to get the values.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc&sortings[1].key=Number&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCustomValueModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/customvalues/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get customer custom value by ID.",
        "operationId": "CustomerCustomValues_GetCustomerCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the customer custom value.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCustomValueModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCustomValueModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Update (Patch) a customer custom value or a part of it.",
        "operationId": "CustomerCustomValues_PatchCustomerCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the customer custom value Can also be comma separate list of IDs to patch multiple customer custom values with one call. When multiple IDs are given, returns model which has list of succeeded customer custom values and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCustomValueModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of CustomerCustomValueModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated customer custom values.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCustomValueModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Deletes a customer custom value.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "CustomerCustomValues_DeleteCustomerCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the customer custom value.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerCustomValueModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/customproperties": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the project custom properties.",
        "operationId": "ProjectCustomProperties_GetProjectCustomProperties",
        "parameters": [
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "active",
            "in": "query",
            "description": "Optional: Get only active or inactive project properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from custom property name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "isInUse",
            "in": "query",
            "description": "Optional: Is the customer property used in any custom property usage.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc&sortings[1].key=Number&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomPropertyModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a project custom property.",
        "operationId": "ProjectCustomProperties_PostProjectCustomProperty",
        "requestBody": {
          "x-name": "customProperty",
          "description": "ProjectCustomPropertyModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomPropertyModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "201": {
            "description": "Created project custom property.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomPropertyModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/projects/customproperties/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get project custom property by ID.",
        "operationId": "ProjectCustomProperties_GetProjectCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the project custom property.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomPropertyModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a project custom property or a part of it.",
        "operationId": "ProjectCustomProperties_PatchProjectCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project custom property Can also be comma separate list of IDs to patch multiple project custom properties with one call. When multiple IDs are given, returns model which has list of succeeded project custom properties and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectCustomPropertyModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated project custom properties.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomPropertyModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a project custom property.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectCustomProperties_DeleteProjectCustomProperty",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project custom property.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomPropertyModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/customvalues": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the project custom values.",
        "operationId": "ProjectCustomValues_GetProjectCustomValues",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "active",
            "in": "query",
            "description": "Optional: Get only values of active or inactive project custom properties.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "target",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "List of target for which to get the values.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc&sortings[1].key=Number&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectCustomValueModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/customvalues/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project custom value by ID.",
        "operationId": "ProjectCustomValues_GetProjectCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the project custom value.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectCustomValueModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCustomValueModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a project custom value or a part of it.",
        "operationId": "ProjectCustomValues_PatchProjectCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project custom value Can also be comma separate list of IDs to patch multiple project custom values with one call. When multiple IDs are given, returns model which has list of succeeded project custom values and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectCustomValueModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectCustomValueModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "List of updated project custom values.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectCustomValueModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes a project custom value.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectCustomValues_DeleteProjectCustomValue",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project custom value.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectCustomValueModel"
          }
        ],
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/activitytypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the Activity Types",
        "operationId": "ActivityTypes_GetActivityTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Activity Types, if given as true return only active Activity Types, if given as false returns only inactive Activity Types",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get activity types that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "category",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Category or multiple categories of activity types to search for. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/ActivityCategory"
              }
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivityTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert an Activity type.",
        "operationId": "ActivityTypes_PostActivityType",
        "requestBody": {
          "x-name": "activityType",
          "description": "Activity type",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ActivityTypeModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted ActivityType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/activitytypes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get Activity Type by ID",
        "operationId": "ActivityTypes_GetActivityType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Activity Type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityTypeModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Activity Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an Activity Type or a part of it",
        "operationId": "ActivityTypes_PatchActivityType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the Activity Type",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityTypeModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ActivityTypeModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated Activity Types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivityTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete an activity type.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if activity type can't be found.",
        "operationId": "ActivityTypes_DeleteActivityType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the activity type to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityTypeModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the activity type to which to move usages of this activity type. Default null. If activity type is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "ActivityTypeModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/customers/{guid}/einvoiceaddresses": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get customers eInvoicing information.",
        "operationId": "EInvoiceAddresses_GetEInvoiceAddresses",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Guid of the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "List of EInvoicingAddressOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EInvoicingAddressOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/einvoiceaddresses/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get eInvoicing information by ID.",
        "operationId": "EInvoiceAddresses_GetEInvoiceAddress",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the eInvoicing information.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "EInvoicingAddressOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "EInvoicingAddressOutputModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EInvoicingAddressOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get Invoices",
        "operationId": "Invoices_GetInvoices",
        "parameters": [
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "paymentDateStart",
            "in": "query",
            "description": "Optional: Get only invoices paid at this date or later. Default: Get invoices regardless of payment date.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "invoiceStatusGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Get invoices with this status only. Default: all statuses.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "InvoiceStatusModel"
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project to get the invoices. If not provided, returns for all projects. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "projectOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project manager to get the invoices for. If not provided, returns for all project managers. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 6,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "projectBusinessUnitGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the business unit of the project. If not provided, returns for all business units. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 7,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "customerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of customer IDs. Get invoices for these customers.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Optional: starting date from which to get the invoices. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 9
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Optional: end date from which to get the invoices. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 10
          },
          {
            "name": "minimumTotalExcludingTax",
            "in": "query",
            "description": "Optional: specifies minimum value for invoice total in organization currency.",
            "schema": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "x-position": 11
          },
          {
            "name": "maximumTotalExcludingTax",
            "in": "query",
            "description": "Optional: specifies maximum value for invoice total in organization currency.",
            "schema": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "x-position": 12
          },
          {
            "name": "referenceNumbers",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Invoice reference number. If not provided, returns invoices with any invoice reference number.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 13
          },
          {
            "name": "numbers",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Invoice number. If not provided, returns invoices with any invoice number.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "integer",
                "format": "int32"
              }
            },
            "x-position": 14
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get invoices that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 15
          },
          {
            "name": "salesPersonGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the salesperson to get the invoices for. If not provided, returns for all sales persons.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 16,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "createdByUserGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the user who created the invoice. If not provided, returns for all users.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 17,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "List of Invoices ",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "InvoicesWrite"
        ],
        "summary": "Add an invoice to project(s)",
        "operationId": "Invoices_PostInvoiceCreation",
        "requestBody": {
          "x-name": "createInvoiceModel",
          "description": "CreateInvoiceModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CreateInvoiceModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created invoice(s)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:write"
            ]
          }
        ]
      }
    },
    "/v1/customers": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get all the customers",
        "operationId": "Customers_GetCustomers",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "If not given, return all Customers, if given as true return only active Customers, if given as false returns only inactive Customers.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "customerOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of customer owner ids to search for. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "isInternal",
            "in": "query",
            "description": "Optional: When true returns only internal customer.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "numbers",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of customer numbers.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "integer",
                "format": "int64"
              }
            },
            "x-position": 6
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get customers that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "emailAddresses",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Get customers where email address matches to any provided email address.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8
          },
          {
            "name": "customerNames",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Get customers where customer name matches to any provided customer name.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 9
          },
          {
            "name": "vatNumber",
            "in": "query",
            "description": "Optional: Get customers based on VAT number with exact match.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 10
          },
          {
            "name": "kvkNumber",
            "in": "query",
            "description": "Optional: Get customers based on KVK number with exact match.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 11
          },
          {
            "name": "changedSinceOptions",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Extend changedSince parameter by searching from linked resources.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/CustomerChangedSinceSearchExtensionOptions"
              }
            },
            "x-position": 12
          }
        ],
        "responses": {
          "200": {
            "description": "All the customers.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Insert a customer.",
        "operationId": "Customers_PostCustomer",
        "requestBody": {
          "x-name": "customer",
          "description": "CustomerModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/CustomerModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted customer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/files": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get all files of customer.",
        "operationId": "CustomerFiles_GetCustomerFiles",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the customer used to get the files.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "List of CustomerFileModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerFileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "FilesWrite"
        ],
        "summary": "Insert a customer file.",
        "description": "Supports multiple files and meta data. Expects MIME multipart content, with optional FileModel JSON content before binary file data. POST /customers/{customerGuid}/files HTTP/1.1 Authorization: Bearer your_auth_token Content-Type: multipart/related; boundary=randomboundarystring Content-Length: number_of_bytes_in_entire_request_body --randomboundarystring Content-Type: application/json {\"Description\" : \"SomeFileDescription\", \"Name\" : \"somefile.ext\"} --randomboundarystring Content-Type: image/jpeg Binary data --randomboundarystring--.",
        "operationId": "CustomerFiles_PostCustomerFile",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the customer or to insert file to.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          }
        ],
        "responses": {
          "201": {
            "description": "Created file metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerFileModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/customerfiles/{guid}": {
      "get": {
        "tags": [
          "FilesRead"
        ],
        "summary": "Get customer file by ID.",
        "operationId": "CustomerFiles_GetCustomerFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the customer file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerFileModel"
          }
        ],
        "responses": {
          "200": {
            "description": "CustomerFile.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerFileModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "FilesDelete"
        ],
        "summary": "Deletes a customer file.",
        "description": "Deletes both file data and meta data. Returns: No Content (204) if succeeded.",
        "operationId": "CustomerFiles_DeleteCustomerFile",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the customer file.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerFileModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "files:delete"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/invoicesettings": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get invoice settings by invoice GUID",
        "operationId": "InvoiceSettings_GetInvoiceSettings",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "Invoice GUID used to get the invoice settings.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "InvoiceSettingsOutputModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceSettingsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicesettings/{guid}": {
      "patch": {
        "tags": [
          "InvoicesWrite"
        ],
        "summary": "Update (Patch) invoice setting",
        "operationId": "InvoiceSettings_PatchInvoiceSettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice settings",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceSettingsOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of InvoiceSettingsModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "InvoiceSettingsOutputModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceSettingsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:write"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get invoice rows",
        "operationId": "InvoiceRows_GetInvoiceRows",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get invoice rows that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/invoicerows": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get Invoice rows for an invoice.",
        "operationId": "InvoiceRows_GetInvoiceRowsForInvoice",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowType",
            "in": "query",
            "description": "Optional: Type of the row. Either Hours or ProjectFees, Default all.",
            "schema": {
              "$ref": "#/components/schemas/InvoiceRowType"
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "List of Invoice rows ",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows/{guid}": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get invoice row by ID",
        "operationId": "InvoiceRows_GetInvoiceRow",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Invoice row",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceRowOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "InvoicesWrite"
        ],
        "summary": "Update (Patch) a invoice row or a part of it",
        "description": "If CostCenterNumber, SalesAccountNumber or RecurringSalesAccountNumber are changed and the invoice row is related to one or many ProjectFees or ProjectTravelExpenses, the values for those will also be updated.",
        "operationId": "InvoiceRows_PatchInvoiceRow",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice row",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of InvoiceRowModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated invoice rows",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceRowOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "InvoicesDelete"
        ],
        "summary": "Deletes an invoice row",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "InvoiceRows_DeleteInvoiceRow",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          {
            "name": "setAsNonBillable",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:delete"
            ]
          }
        ]
      }
    },
    "/v1/localization/languages": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the languages",
        "operationId": "Languages_GetLanguages",
        "parameters": [
          {
            "name": "isInvoiceLanguage",
            "in": "query",
            "description": "Optional: which languages to fetch. only invoice languages or non invoice languages?, default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "All the Languages",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LanguageModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/languages/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get language by ID",
        "operationId": "Languages_GetLanguage",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the language.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "LanguageModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Language",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/organizationdetails": {
      "get": {
        "tags": [
          "OrganizationRead"
        ],
        "summary": "Get the details of organization.",
        "operationId": "OrganizationDetails_GetOrganizationDetails",
        "responses": {
          "200": {
            "description": "Organization",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationDetailsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "organization:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "OrganizationWrite"
        ],
        "summary": "Update (Patch) a organization details or a part of it",
        "operationId": "OrganizationDetails_PatchOrganizationDetails",
        "requestBody": {
          "x-name": "patchDocument",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "organization details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationDetailsOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "organization:write"
            ]
          }
        ]
      }
    },
    "/v1/phases/{phaseGuid}/phasemembers": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get phase members",
        "description": "Use root phase to get project members.",
        "operationId": "PhaseMembers_GetPhaseMembers",
        "parameters": [
          {
            "name": "phaseGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the phase.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "Optional: Is the member active on the phase. Filters only root phase members. Default nothing = all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "isUserActive",
            "in": "query",
            "description": "Optional: Is the user active. Default nothing = all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "All the phase members",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseMemberOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/phasemembers": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all active phase members",
        "description": "Use root phase to get project members.",
        "operationId": "PhaseMembers_GetAllPhaseMembers",
        "parameters": [
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get phase members that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "isUserActive",
            "in": "query",
            "description": "Optional: Is the user active. Default nothing = all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "All the phase members",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseMemberOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Adds a phase member.",
        "description": "User is always added as a root phase (project) member also.",
        "operationId": "PhaseMembers_PostPhaseMember",
        "parameters": [
          {
            "name": "addToAllSubPhases",
            "in": "query",
            "description": "Optional: Add member to all sub phases. Default true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "memberModel",
          "description": "PhaseMemberModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/PhaseMemberModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Added member.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhaseMemberModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/deletedphasemembers": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all deleted phase members",
        "description": "Use root phase to get project members.",
        "operationId": "PhaseMembers_GetAllDeletedPhaseMembers",
        "parameters": [
          {
            "name": "deletedSince",
            "in": "query",
            "description": "Optional: Get phase members that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: Page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "isUserActive",
            "in": "query",
            "description": "Optional: Is the user active. Default nothing = all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "All the phase members",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeletedPhaseMemberOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/phases": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the phases.",
        "operationId": "Phases_GetPhases",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get phases that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "code",
            "in": "query",
            "description": "Optional: Code of the phase.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of project ids.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a phase",
        "operationId": "Phases_PostPhase",
        "requestBody": {
          "x-name": "phase",
          "description": "PhaseOutputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/PhaseInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created phase",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhaseOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/phases/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get phase by ID",
        "operationId": "Phases_GetPhase",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the phase.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhaseOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a phase or a part of it",
        "operationId": "Phases_PatchPhase",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the phase",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of PhaseInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "Updated phase",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes a phase",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "Phases_DeletePhase",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the phase.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{guid}/phaseswithhierarchy": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project's phases as flat list",
        "operationId": "Phases_GetProjectPhases",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the phases for the project",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseModelWithHierarchyInfo"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/rootphaseswithhierarchy": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get a list of root phases with information about hierarchy.",
        "operationId": "Phases_GetRootPhases",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "customerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4
          },
          {
            "name": "projectKeywordGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5
          },
          {
            "name": "projectStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 6
          },
          {
            "name": "salesPersonGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 7
          },
          {
            "name": "projectOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8
          },
          {
            "name": "businessUnitGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 9
          },
          {
            "name": "customerOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 10
          },
          {
            "name": "salesStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 11
          },
          {
            "name": "openProjects",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 12
          },
          {
            "name": "projectMemberUserGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 13
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/activities": {
      "get": {
        "tags": [
          "ActivitiesRead"
        ],
        "summary": "Get all activities of an organization",
        "description": "Start and end date times accept values of DateTimeOffset type, based on UTF-8 encoding.",
        "operationId": "Activities_GetActivities",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "closed",
            "in": "query",
            "description": "Optional: Which activities to fetch - open/closed, Default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "activityCategories",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: activity category for the activities to be fetched. Should be one of Personal/Absences/CalendarEntry/SalesEvent/Task. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/ActivityCategory"
              }
            },
            "x-position": 4
          },
          {
            "name": "customerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of customer. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "includeTasksWithNoCustomer",
            "in": "query",
            "description": "Optional: Include the activities that don't have customer. Default is true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 6
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project for the activities to be fetched. If not provided, returns for all projects. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 7,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "includeTasksWithNoProject",
            "in": "query",
            "description": "Optional: Include the activities that don't have project. Default is true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 8
          },
          {
            "name": "projectBusinessUnitGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the business unit of the project based on which activities should be filtered. If not provided, returns for all business units. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 9,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "projectOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project manager. If not provided, returns for all project managers. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 10,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "userGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the user for the activities to be fetched. If not provided, returns for all users. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 11,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "includeAsMember",
            "in": "query",
            "description": "Optional: Include the activities that the user is a member. Effective if userGuid is provided. Default is to not include.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 12
          },
          {
            "name": "userKeywordGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: User keyword Ids of activity owner to search for.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 13,
            "x-relation-guid": "UserKeywordModel"
          },
          {
            "name": "startDateTime",
            "in": "query",
            "description": "Optional: starting date and time from which to get the activities in user's timezone. Finds all activities that end after the date time. Format \"2017-04-12T13%3A20%3A00%2b02%3A00\". Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 14
          },
          {
            "name": "endDateTime",
            "in": "query",
            "description": "Optional: ending date and time to which to get the activities in user's timezone. Finds all activities that start before or on the date time. Format \"2017-04-12T13%3A20%3A00%2b02%3A00\". Default all. If activities for one day are fetched, give start date time with time as 00:00 with the offset of the timezone and end time as 23:59:59 with the offset.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 15
          },
          {
            "name": "projectTaskStatusGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project task status. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 16,
            "x-relation-guid": "ProjectTaskStatusModel"
          },
          {
            "name": "phaseGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the phase for the activities to be fetched. If not provided, returns for all phases. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 17,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "includeSubPhases",
            "in": "query",
            "description": "Optional: If one phase guid is given include activities also from sub phases. If multiple phase guids are given, returns activities only for those regardless of this parameter. Default false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 18
          },
          {
            "name": "contactGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the contact for the activities to be fetched. If not provided, returns for all users. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 19,
            "x-relation-guid": "ContactModel"
          },
          {
            "name": "hasDuration",
            "in": "query",
            "description": "Optional: has duration flag for the activity. Default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 20
          },
          {
            "name": "hasHours",
            "in": "query",
            "description": "Optional: has any work hour entries associated with the activity. Default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 21
          },
          {
            "name": "isUnassigned",
            "in": "query",
            "description": "Optional: is the activity unassigned. Default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 22
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get activities that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 23
          },
          {
            "name": "useStrictStartAndEndDateTime",
            "in": "query",
            "description": "Optional: If given as true returns activities that start after start time and end before end time. If given as false returns activities that start before end time and end after start time. Limit are included in both cases. Default false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 24
          },
          {
            "name": "activityTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project activity type. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 25,
            "x-relation-guid": "ActivityTypeModel"
          },
          {
            "name": "recurrenceType",
            "in": "query",
            "description": "Optional: Type of the recurrence. Default returns all not recurring activities, instances and exceptions. (None = not recurring activity)",
            "schema": {
              "$ref": "#/components/schemas/RecurrenceType"
            },
            "x-position": 26
          },
          {
            "name": "isApproved",
            "in": "query",
            "description": "Optional: Get activities based on the approval status.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 27
          }
        ],
        "responses": {
          "200": {
            "description": "Activities for a project",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivityModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ActivitiesWrite"
        ],
        "summary": "Insert a activity",
        "operationId": "Activities_PostActivity",
        "requestBody": {
          "x-name": "activity",
          "description": "ActivityModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ActivityModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created activity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:write"
            ]
          }
        ]
      }
    },
    "/v1/activities/{guid}": {
      "get": {
        "tags": [
          "ActivitiesRead"
        ],
        "summary": "Get activity by ID",
        "operationId": "Activities_GetActivity",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the activity.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ActivitiesWrite"
        ],
        "summary": "Update (Patch) a activity or a part of it",
        "operationId": "Activities_PatchActivity",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the activity. Can also be comma separate list of IDs to patch multiple activities with one call. When multiple IDs are given, returns model which has list of succeeded activities and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ActivityModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated activities",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivityModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ActivitiesDelete"
        ],
        "summary": "Delete an activity",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if activity can't be found.",
        "operationId": "Activities_DeleteActivity",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the activity to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:delete"
            ]
          }
        ]
      }
    },
    "/v1/activities/{guid}/exceptions": {
      "delete": {
        "tags": [
          "ActivitiesDelete"
        ],
        "summary": "Resets exceptions from a recurring activity.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if activity can't be found or is not recurring.",
        "operationId": "Activities_DeleteExceptions",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the recurring activity",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ActivityModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "activities:delete"
            ]
          }
        ]
      }
    },
    "/v1/phasestatustypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get phase status types",
        "operationId": "PhaseStatusTypes_GetPhaseStatusTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all phase status types, if given as true return only active phase status types, if given as false returns only inactive phase status types",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "All the phase status types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseStatusTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a phase status type",
        "operationId": "PhaseStatusTypes_PostPhaseStatusType",
        "requestBody": {
          "x-name": "phaseStatusType",
          "description": "PhaseStatusTypeModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/PhaseStatusTypeModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created phase status type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhaseStatusTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/phasestatustypes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get phase status type by GUID",
        "operationId": "PhaseStatusTypes_GetPhaseStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the phase status type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseStatusTypeModel"
          }
        ],
        "responses": {
          "200": {
            "description": "PhaseStatusTypeModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhaseStatusTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a phase status type or a part of it",
        "operationId": "PhaseStatusTypes_PatchPhaseStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the phase status type",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseStatusTypeModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of TaskStatusTypeModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated phase status type",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseStatusTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a phase status type",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if phase status type can't be found.",
        "operationId": "PhaseStatusTypes_DeletePhaseStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the phase status type to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseStatusTypeModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the phase status type to which to move usages of this phase status type. Default null. If phase status type is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "PhaseStatusTypeModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectfees": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get the project fees.",
        "operationId": "ProjectFees_GetProjectFeesByToken",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get project fees that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectFee",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "FeesWrite"
        ],
        "summary": "Insert a project fee.",
        "operationId": "ProjectFees_PostProjectFee",
        "requestBody": {
          "x-name": "projectFee",
          "description": "ProjectFeeInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectFeeInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created project fees.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:write"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/projectfees": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get all the projectFees for a user",
        "operationId": "ProjectFees_GetUserProjectFees",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "productType",
            "in": "query",
            "description": "Optional: ProjectFee's product type. if given, it filters the projectFees by the given type. FixedFees (Own work), Materials (Products), Subcontracting.",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 4
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: Filter the project fees. If true/false, only the billable/non-billable ones are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "isBilled",
            "in": "query",
            "description": "Optional: Filter the project fees. If true/false, only the ones that are/are not invoiced are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "invoiceableDate",
            "in": "query",
            "description": "Optional: Filter the project fees. When given, only the ones that are invoiceable before or on the given date are returned. Default is null.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "hasPhase",
            "in": "query",
            "description": "Optional: Filter the project fees. If true/false, only the ones are connected/not-connected to a phase are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Start date search criteria. Only get project fees that have event date from this date.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 9
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "End date search criteria. Only get project fees that have event date until this date.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 10
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectFees",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectfees": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get all the project fees for a project",
        "operationId": "ProjectFees_GetProjectFeesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "productType",
            "in": "query",
            "description": "Optional: ProjectFee's product type. if given, it filters the projectFees by the given type. FixedFees (Own work), Materials (Products), Subcontracting",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 4
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: Filter the project fees. If true/false, only the billable/non-billable ones are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "isBilled",
            "in": "query",
            "description": "Optional: Filter the project fees. If true/false, only the ones that are/are not invoiced are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "invoiceableDate",
            "in": "query",
            "description": "Optional: Filter the project fees. When given, only the ones that are invoiceable before or on the given date are returned. Default is null.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "includeRecurringRules",
            "in": "query",
            "description": "Optional: Also fetches recurring rules along with project fees. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 8
          },
          {
            "name": "isBillablePeriodInFuture",
            "in": "query",
            "description": "Optional. Filter the project fees. If true/false, only the ones that will be billable in the future are returned. If null, all are returned. Default is false.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 9
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectFees",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/projectfees": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project fees on an invoice",
        "operationId": "ProjectFees_GetInvoiceProjectFees",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "productType",
            "in": "query",
            "description": "Optional: ProjectFee's product type. if given, it filters the projectFees by the given type. FixedFees (Own work), Materials (Products), Subcontracting",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectFees",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/uninvoicedprojectfees": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get uninvoiced project fees available for invoice",
        "operationId": "ProjectFees_GetUninvoicedProjectFeesForInvoice",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: Filter the project fees. If true/false, only the billable/non-billable ones are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectFees",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows/{invoiceRowGuid}/projectfees": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project fees on an invoice row",
        "operationId": "ProjectFees_GetInvoiceRowProjectFees",
        "parameters": [
          {
            "name": "invoiceRowGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "productType",
            "in": "query",
            "description": "Optional: ProjectFee's product type. if given, it filters the projectFees by the given type. FixedFees (Own work), Materials (Products), Subcontracting",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectFees",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/deletedprojectfees": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get the deleted project fees.",
        "operationId": "ProjectFees_GetDeletedProjectFees",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project for the deleted project fees to be fetched. If not provided, returns for all projects. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "userGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the user. If not provided, returns for all users. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "deletedSince",
            "in": "query",
            "description": "Optional: Get project fees that have been deleted after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeletedProjectFeeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      }
    },
    "/v1/products": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the Products",
        "operationId": "Products_GetProducts",
        "parameters": [
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "type",
            "in": "query",
            "description": "Product type. if given, it filters the products by the given type.",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 3
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "If not given, return all Products, if given as true return only isActive Products, if given as false returns only inactive Products",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "code",
            "in": "query",
            "description": "Optional: Code of the product.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get products that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "All the Products",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a product.",
        "operationId": "Products_PostProduct",
        "requestBody": {
          "x-name": "product",
          "description": "ProductModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProductInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created product.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/productsforproject": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Gets available products for the given project where price information comes from projects price list",
        "operationId": "Products_GetSearchedProducts",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Id of the project",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "type",
            "in": "query",
            "description": "Product type. if given, it filters the products by the given type",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 4
          },
          {
            "name": "includeProductsFromRegistry",
            "in": "query",
            "description": "Optional: If true returns all the products from registry with project specific prices. If false returns only products specified for the project with project specific prices. Default false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "All the Products matching search criteria",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductForProjectOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/products/{productGuid}/productcountrysettings": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the country settings for a product",
        "operationId": "ProductCountrySettings_GetProductCountrySettings",
        "parameters": [
          {
            "name": "productGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the product.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the ProductCountrySettings (tax related information)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductCountrySettingsModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/productcountrysettings": {
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a product country setting",
        "operationId": "ProductCountrySettings_PostProductCountrySettings",
        "requestBody": {
          "x-name": "model",
          "description": "ProductCountrySettingsModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProductCountrySettingsModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted product country setting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCountrySettingsModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/productcountrysettings/{guid}": {
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a product country setting",
        "operationId": "ProductCountrySettings_PatchProductCountrySettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the product country setting",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductCountrySettingsModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProductCountrySettingsModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated product country settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductCountrySettingsModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a product country setting",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if product country setting can't be found.",
        "operationId": "ProductCountrySettings_DeleteProductCountrySetting",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the product country setting.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductCountrySettingsModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectbillingcustomers": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the billing customers for a project",
        "operationId": "ProjectBillingCustomers_GetWorkHourPricesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Project's billing customers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectBillingCustomerModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projects": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the projects",
        "operationId": "Projects_GetProjects",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "currencyGuid",
            "in": "query",
            "description": "Optional: ID of project currency.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3,
            "x-relation-guid": "CurrencyOutputModel"
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get projects that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "salesStatusChangedSince",
            "in": "query",
            "description": "Optional: Get projects for which sales status has been changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "projectStatusChangedSince",
            "in": "query",
            "description": "Optional: Get projects for which status has been changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: When true fetch projects that have something to bill, when false nothing to bill. Default nothing = all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "customerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 9
          },
          {
            "name": "projectKeywordGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 10
          },
          {
            "name": "projectStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 11
          },
          {
            "name": "salesPersonGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 12
          },
          {
            "name": "projectOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 13
          },
          {
            "name": "businessUnitGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 14
          },
          {
            "name": "minimumBillableAmount",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "x-position": 15
          },
          {
            "name": "customerOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 16
          },
          {
            "name": "invoiceableDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 17
          },
          {
            "name": "marketSegmentationGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 18
          },
          {
            "name": "salesStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 19
          },
          {
            "name": "isClosed",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 20
          },
          {
            "name": "hasRecurringFees",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 21
          },
          {
            "name": "companyCurrencyGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 22
          },
          {
            "name": "projectMemberUserGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 23
          },
          {
            "name": "numbers",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "integer",
                "format": "int64"
              }
            },
            "x-position": 24
          },
          {
            "name": "internal",
            "in": "query",
            "description": "Optional: Get internal / non-internal projects.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 25
          }
        ],
        "responses": {
          "200": {
            "description": "Projects",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a project",
        "description": "When creating a new project, the price list property will be ignored, as it is chosen by default.",
        "operationId": "Projects_PostProject",
        "requestBody": {
          "x-name": "project",
          "description": "ProjectInputModelBase",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectInputModelBase"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created project",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/salescases": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Gets the sales cases (sales status is in progress)",
        "operationId": "Projects_GetSalesCases",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "customerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3
          },
          {
            "name": "currencyGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5
          },
          {
            "name": "projectKeywordGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 6
          },
          {
            "name": "projectStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 7
          },
          {
            "name": "salesPersonGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8
          },
          {
            "name": "projectOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 9
          },
          {
            "name": "businessUnitGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 10
          },
          {
            "name": "minimumBillableAmount",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "x-position": 11
          },
          {
            "name": "customerOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 12
          },
          {
            "name": "invoiceableDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 13
          },
          {
            "name": "marketSegmentationGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 14
          },
          {
            "name": "salesStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 15
          },
          {
            "name": "isClosed",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 16
          },
          {
            "name": "hasRecurringFees",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 17
          },
          {
            "name": "companyCurrencyGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 18
          },
          {
            "name": "projectMemberUserGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 19
          },
          {
            "name": "numbers",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "integer",
                "format": "int64"
              }
            },
            "x-position": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Projects",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/customers/{customerGuid}/projects": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get customer's projects",
        "operationId": "Projects_GetCustomerProjects",
        "parameters": [
          {
            "name": "customerGuid",
            "in": "path",
            "required": true,
            "description": "Id of the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: When true fetch projects that have something to bill, when false nothing to bill. Default nothing = all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "currencyGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 6
          },
          {
            "name": "projectKeywordGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 7
          },
          {
            "name": "projectStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8
          },
          {
            "name": "salesPersonGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 9
          },
          {
            "name": "projectOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 10
          },
          {
            "name": "businessUnitGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 11
          },
          {
            "name": "minimumBillableAmount",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "x-position": 12
          },
          {
            "name": "customerOwnerGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 13
          },
          {
            "name": "invoiceableDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 14
          },
          {
            "name": "marketSegmentationGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 15
          },
          {
            "name": "salesStatusTypeGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 16
          },
          {
            "name": "isClosed",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 17
          },
          {
            "name": "hasRecurringFees",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 18
          },
          {
            "name": "companyCurrencyGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 19
          },
          {
            "name": "projectMemberUserGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 20
          },
          {
            "name": "numbers",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "integer",
                "format": "int64"
              }
            },
            "x-position": 21
          }
        ],
        "responses": {
          "200": {
            "description": "All the projects for the customer",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project by ID",
        "operationId": "Projects_GetProject",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) a project or a part of it",
        "description": "To update current project status, give ProjectStatusTypeGuid and possibly Description. To update current sales status, give SalesStatusTypeGuid (",
        "operationId": "Projects_PatchProject",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated projects",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete a project",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if project can't be found.",
        "operationId": "Projects_DeleteProject",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the project to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projecttravelexpenses": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get the project travel expenses.",
        "operationId": "ProjectTravelExpenses_GetProjectTravelExpenses",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get project travel expenses that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "TravelsWrite"
        ],
        "summary": "Insert a project travel expense.",
        "operationId": "ProjectTravelExpenses_PostProjectTravelExpense",
        "requestBody": {
          "x-name": "projectTravelExpense",
          "description": "ProjectTravelExpenseInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectTravelExpenseInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created project travel expense.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:write"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/projecttravelexpenses": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get all the project travel expenses for a user",
        "operationId": "ProjectTravelExpenses_GetProjectTravelExpensesForUser",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Optional: starting date from which to get the travel expenses. Default all.",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Optional: starting date to which to get the travel expenses. Default all.",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "expenseClass",
            "in": "query",
            "description": "Optional: Class of the expense. Mileage, DailyAllowance or OtherTravelExpense",
            "schema": {
              "$ref": "#/components/schemas/ExpensesClass"
            },
            "x-position": 6
          },
          {
            "name": "isReimbursed",
            "in": "query",
            "description": "Optional. Filter the project travel expenses. If true/false, only the ones that are reimbursed are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "isTravelReimbursementRequired",
            "in": "query",
            "description": "Optional: Filter the project travel expenses by whether or not the reimbursement is required. Default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "travelReimbursementGuid",
            "in": "query",
            "description": "Optional: ID of the travel reimbursement",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 9,
            "x-relation-guid": "TravelReimbursementOutputModel"
          },
          {
            "name": "costCurrencyGuid",
            "in": "query",
            "description": "Optional: ID of the cost currency.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 10,
            "x-relation-guid": "CurrencyOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projecttravelexpenses": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get all the project travel expenses for a project",
        "operationId": "ProjectTravelExpenses_GetProjectTravelExpensesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: Filter the travel expenses. If true/false, only the billable/non-billable ones are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isBilled",
            "in": "query",
            "description": "Optional: Filter the travel expenses. If true/false, only the ones that are/are not invoiced are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "invoiceableDate",
            "in": "query",
            "description": "Optional: Filter the project fees. When given, only the ones that are invoiceable before or on the given date are returned. Default is null.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "isBillablePeriodInFuture",
            "in": "query",
            "description": "Optional. Filter the project travel expenses. If true/false, only the ones that will be billable in the future are returned. If null, all are returned. Default is false.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "expenseClass",
            "in": "query",
            "description": "Optional: Class of the expense. Mileage, DailyAllowance or OtherTravelExpense",
            "schema": {
              "$ref": "#/components/schemas/ExpensesClass"
            },
            "x-position": 8
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/projecttravelexpenses": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project travel expenses on an invoice",
        "operationId": "ProjectTravelExpenses_GetInvoiceProjectTravelExpenses",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "expenseClass",
            "in": "query",
            "description": "Optional: Class of the expense. Mileage, DailyAllowance or OtherTravelExpense",
            "schema": {
              "$ref": "#/components/schemas/ExpensesClass"
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/uninvoicedprojecttravelexpenses": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get uninvoiced project travel expenses available for invoice",
        "operationId": "ProjectTravelExpenses_GetUninvoicedProjectTravelExpensesForInvoice",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: Filter the travel expenses. If true/false, only the billable/non-billable ones are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "expenseClass",
            "in": "query",
            "description": "Optional: Class of the expense. Mileage, DailyAllowance or OtherTravelExpense",
            "schema": {
              "$ref": "#/components/schemas/ExpensesClass"
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows/{invoiceRowGuid}/projecttravelexpenses": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project travel expenses on an invoice row",
        "operationId": "ProjectTravelExpenses_GetInvoiceRowProjectTravelExpenses",
        "parameters": [
          {
            "name": "invoiceRowGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "expenseClass",
            "in": "query",
            "description": "Optional: Class of the expense. Mileage, DailyAllowance or OtherTravelExpense",
            "schema": {
              "$ref": "#/components/schemas/ExpensesClass"
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/travelreimbursements/{travelReimbursementGuid}/projecttravelexpenses": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get all the project travel expenses for a travel reimbursement",
        "operationId": "ProjectTravelExpenses_GetProjectTravelExpensesForTravelReimbursement",
        "parameters": [
          {
            "name": "travelReimbursementGuid",
            "in": "path",
            "required": true,
            "description": "Optional: ID of the travel reimbursement",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "expenseClass",
            "in": "query",
            "description": "Optional: Class of the expense. Mileage, DailyAllowance or OtherTravelExpense",
            "schema": {
              "$ref": "#/components/schemas/ExpensesClass"
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      }
    },
    "/v1/deletedprojecttravelexpenses": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get the deleted project travel expenses.",
        "operationId": "ProjectTravelExpenses_GetDeletedProjectTravelExpenses",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "projectGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project for the deleted project travel expenses to be fetched. If not provided, returns for all projects. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "userGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the user. If not provided, returns for all users. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "deletedSince",
            "in": "query",
            "description": "Optional: Get project travel expenses that have been deleted after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeletedProjectTravelExpenseModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      }
    },
    "/v1/token": {
      "post": {
        "tags": [
          "NoScope"
        ],
        "summary": "Can be used to get the login information and access token for the api client.",
        "operationId": "PublicBearerAuthentication_GetLoginToken",
        "requestBody": {
          "x-name": "credentials",
          "description": "ClientCredentials of the client.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ClientCredentials"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "PublicAuthenticationOutputModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAuthenticationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/v1/refreshtoken": {
      "post": {
        "tags": [
          "NoScope"
        ],
        "summary": "Get new access token using a refresh token.",
        "operationId": "PublicBearerAuthentication_GetAccessTokenTokenFromRefreshToken",
        "requestBody": {
          "x-name": "refreshToken",
          "description": "Refresh token.",
          "content": {
            "application/json": {
              "schema": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "PublicAuthenticationOutputModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAuthenticationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/v1/login/oauth/access_token": {
      "post": {
        "tags": [
          "NoScope"
        ],
        "summary": "Get OAuth2 access token (non standard response).",
        "operationId": "PublicBearerAuthentication_GetAccessTokenJson",
        "requestBody": {
          "x-name": "credentials",
          "description": "AccessTokenCredentials model",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/AccessTokenCredentials"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "PublicAuthenticationOutputModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAuthenticationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/v1/login/oauth/token": {
      "post": {
        "tags": [
          "NoScope"
        ],
        "summary": "Get OAuth2 access token (OAuth2 specification formatted response).",
        "operationId": "PublicBearerAuthentication_GetOAuthTokenJson",
        "requestBody": {
          "x-name": "credentials",
          "description": "AccessTokenCredentials model",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/AccessTokenCredentials"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "OAuthOutputModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthOutputModel"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthErrorOutputModel"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthErrorOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/reimbursedprojectfees": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project fees on an invoice",
        "operationId": "ReimbursedProjectFees_GetInvoiceReimbursedProjectFees",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "ReimbursedProjectFee",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReimbursedProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows/{invoiceRowGuid}/reimbursedprojectfees": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project fees on an invoice row",
        "operationId": "ReimbursedProjectFees_GetInvoiceRowReimbursedProjectFees",
        "parameters": [
          {
            "name": "invoiceRowGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "ReimbursedProjectFee",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReimbursedProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/salesstatustypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the sales status types",
        "operationId": "SalesStatusTypes_GetSalesStatusTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all sales status types, if given as true return only active sales status types, if given as false returns only inactive sales status types",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "salesState",
            "in": "query",
            "description": "Optional: Get sales status types of the sales state.",
            "schema": {
              "$ref": "#/components/schemas/SalesStatusType"
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: First row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from sales status type name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc &sortings[1].key=Code&sortings[1].value=Asc\"",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "Sales status types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesStatusTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a sales status type",
        "operationId": "SalesStatusTypes_PostSalesStatusType",
        "requestBody": {
          "x-name": "salesStatusType",
          "description": "salesStatusType",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/SalesStatusTypeInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Sales status type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesStatusTypeOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/travelexpensetypes/{travelExpenseTypeGuid}/travelexpensetypecountrysettings": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all country settings for a travel expense type",
        "operationId": "TravelExpenseTypeCountrySettings_GetTravelExpenseTypeCountrySettings",
        "parameters": [
          {
            "name": "travelExpenseTypeGuid",
            "in": "path",
            "required": true,
            "description": "Guid of the travel expense type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelExpenseTypeOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the TravelExpenseCountrySettings (tax related information)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelExpenseTypeCountrySettingsModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/travelexpensetypecountrysettings": {
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a travel expense type country setting",
        "operationId": "TravelExpenseTypeCountrySettings_PostTravelExpenseTypeCountrySettings",
        "requestBody": {
          "x-name": "model",
          "description": "Travel expense type country setting model",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/TravelExpenseTypeCountrySettingsModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Added travel expense type country setting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelExpenseTypeCountrySettingsModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/travelexpensetypecountrysettings/{guid}": {
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a travel expense type country setting",
        "operationId": "TravelExpenseTypeCountrySettings_PatchTravelExpenseTypeCountrySettings",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the travel expense type country setting",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelExpenseTypeCountrySettingsModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of TravelExpenseTypeCountrySettingsModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated travel expense type country settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelExpenseTypeCountrySettingsModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a travel expense type country setting",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if travel expense type country setting can't be found.",
        "operationId": "TravelExpenseTypeCountrySettings_DeleteTravelExpenseTypeCountrySetting",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the travel expense type country setting.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelExpenseTypeCountrySettingsModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/users": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get users",
        "operationId": "Users_GetUsers",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isActive",
            "in": "query",
            "description": "If not given, return all users, if given as true return only active users, if given as false returns only inactive users",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "businessUnitGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the business unit of the user. If not provided, returns for all business units. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "keywordGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the keyword of the user. If not provided, returns for all keywords. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5,
            "x-relation-guid": "UserKeywordModel"
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get users that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "supervisorUserGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the supervisor to get subordinates for.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 7,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "code",
            "in": "query",
            "description": "Optional: Code of the user.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "email",
            "in": "query",
            "description": "Optional: Email address of the user.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 9
          },
          {
            "name": "purpose",
            "in": "query",
            "description": "Optional: Filter users by purpose.",
            "schema": {
              "$ref": "#/components/schemas/GetUsersPurpose"
            },
            "x-position": 10
          }
        ],
        "responses": {
          "200": {
            "description": "All the users",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Insert an user.",
        "operationId": "Users_PostUser",
        "requestBody": {
          "x-name": "user",
          "description": "UserModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/UserInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      }
    },
    "/v1/travelreimbursements": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get travel reimbursements.",
        "operationId": "TravelReimbursements_GetTravelReimbursements",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get travel reimbursements that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "travelReimbursementStatusGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of travel reimbursement status ids.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "TravelReimbursementStatusModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelReimbursementOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "TravelsWrite"
        ],
        "summary": "Add a travel reimbursement",
        "operationId": "TravelReimbursements_PostTravelReimbursement",
        "parameters": [
          {
            "name": "addAllUnreimbursedTravelExpenses",
            "in": "query",
            "description": "Optional: Add all of user's unreimbursed travel expenses to reimbursement. Default is true. If TravelExpenseReimbursementStartDate is given in organization settings, travel expenses are added from that date onwards. If value is false then expenses from includedProjectTravelExpenses list are added.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 2
          },
          {
            "name": "includedProjectTravelExpenses",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of included projectTravelExpense GUIDs belonging to the user. If addAllUnreimbursedTravelExpenses is true then this list is ignored.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "model",
          "description": "TravelReimbursementModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/TravelReimbursementInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Added travel reimbursement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelReimbursementOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:write"
            ]
          }
        ]
      }
    },
    "/v1/travelreimbursements/{guid}": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get travel reimbursement by ID",
        "operationId": "TravelReimbursements_GetTravelReimbursement",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of travel reimbursement",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelReimbursementOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "TravelsWrite"
        ],
        "summary": "Update (Patch) a travel reimbursement",
        "operationId": "TravelReimbursements_PatchTravelReimbursement",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the travel reimbursement",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "Updated travel reimbursement",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelReimbursementOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "TravelsDelete"
        ],
        "summary": "Delete a travel reimbursement",
        "operationId": "TravelReimbursements_DeleteTravelReimbursement",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of travel reimbursement",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content (204) if succeeded."
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:delete"
            ]
          }
        ]
      }
    },
    "/v1/workdays": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get all workdays for users.",
        "operationId": "Workdays_GetAllWorkdays",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "required": true,
            "description": "Start date of the workdays.",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "x-position": 1
          },
          {
            "name": "endDate",
            "in": "query",
            "required": true,
            "description": "End date of the workdays.",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "x-position": 2
          },
          {
            "name": "userGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Guids of the users.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "isCompleted",
            "in": "query",
            "description": "Optional: Get only completed workdays.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get only workdays that have changed after this date.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "pageToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "rowCount",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "List of workdays.",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkdayOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/workdays": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get workdays for a user.",
        "operationId": "Workdays_GetWorkdays",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "required": true,
            "description": "Start date of the workdays.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "required": true,
            "description": "End date of the workdays.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "User's workdays.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkdayModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/workdays/{date}": {
      "patch": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Update (Patch) a workday or a part of it",
        "operationId": "Workdays_PatchWorkDay",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "date",
            "in": "path",
            "required": true,
            "description": "Date of the workday..",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of WorkdayModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "list of updated workdays",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkdayModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      }
    },
    "/v1/phases/{phaseGuid}/worktypes": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all work types that are available for a phase (for work hour entry)",
        "description": "Only the active work types are included in the list, whether they come from organization settings or project specific work types.",
        "operationId": "WorkTypes_GetPhaseWorkTypes",
        "parameters": [
          {
            "name": "phaseGuid",
            "in": "path",
            "required": true,
            "description": "Id of the phase.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: number of rows to fetch",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "userGuid",
            "in": "query",
            "description": "Id of the user for whom the work types are retrieved. Default is current user.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the work types matching search criteria",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/vatrates": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all organization vat rates",
        "operationId": "VatRates_GetVatRates",
        "parameters": [
          {
            "name": "countryGuid",
            "in": "query",
            "description": "If not given, return all vat rates in organizations country. If given return only for that country.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1,
            "x-relation-guid": "CountryModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all vat rates, if given as true return only active ones, if given as false returns only inactive ones.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "Vat rates",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VatRateOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a vat rate",
        "operationId": "VatRates_PostVatRate",
        "requestBody": {
          "x-name": "model",
          "description": "VatRateInputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/VatRateInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted vat rate",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VatRateOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/vatrates/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get a vat rate by GUID",
        "operationId": "VatRates_GetVatRate",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the vat rate.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "VatRateOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Vat rate",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VatRateOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a vat rate or a part of it",
        "operationId": "VatRates_PatchVatRate",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the vat rate",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "VatRateOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ValueAddedTaxModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated vat rates",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VatRateOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a vat rate",
        "description": "Returns: No Content (204) if succeeded. Bad Request (400) if vat rate is the default one. Not Found (404) if vat rate can't be found.",
        "operationId": "VatRates_DeleteVatRate",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID for the vat rate to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "VatRateOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/workhours/{guid}": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get work hour by ID",
        "operationId": "WorkHours_GetWorkHour",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the work hour.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkHourOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkHourOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "HoursWrite"
        ],
        "summary": "Update (Patch) a work hour or a part of it",
        "operationId": "WorkHours_PatchWorkHour",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the work hour. Can also be comma separate list of IDs to patch multiple work hours with one call. When multiple IDs are given, returns model which has list of succeeded work hours and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkHourInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of WorkHourInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated work hours",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "HoursDelete"
        ],
        "summary": "Deletes a work hour.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "WorkHours_DeleteWorkHour",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the work hour.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkHourInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:delete"
            ]
          }
        ]
      }
    },
    "/v1/workhours": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get the work hours.",
        "operationId": "WorkHours_GetWorkHours",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get work hours that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "billableStatus",
            "in": "query",
            "description": "Billable status type",
            "schema": {
              "$ref": "#/components/schemas/BillableStatusType"
            },
            "x-position": 4
          },
          {
            "name": "eventDateStart",
            "in": "query",
            "description": "Optional: Get work hours that have event date after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "eventDateEnd",
            "in": "query",
            "description": "Optional: Get work hours that have event date before this date time (less or equal).",
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "businessUnitGuid",
            "in": "query",
            "description": "Optional: Get work hours for this business unit and hierarchial subunits.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "isApproved",
            "in": "query",
            "description": "Optional: Get work hours based on the approval status.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 8
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "HoursWrite"
        ],
        "summary": "Insert a work hour",
        "operationId": "WorkHours_PostWorkHour",
        "requestBody": {
          "x-name": "workHour",
          "description": "WorkHourInputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/WorkHourInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created work hour",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkHourOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:write"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/workhours": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get all the work hours for a user",
        "operationId": "WorkHours_GetWorkHoursForUser",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Optional: starting date from which to get the hours. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Optional: starting date to which to get the hours. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "phaseGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the phase to get the hours for. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "workTypeGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the work type. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5,
            "x-relation-guid": "WorkTypeOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "WorkHours",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      }
    },
    "/v1/deletedworkhours": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get the deleted work hours.",
        "operationId": "WorkHours_GetDeletedWorkHours",
        "parameters": [
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "projectGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the project for the deleted work hours to be fetched. If not provided, returns for all projects. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "userGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: ID of the user. If not provided, returns for all users. Default all.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "deletedSince",
            "in": "query",
            "description": "Optional: Get work hours that have been deleted after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeletedWorkHourModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/workhours": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get all the work hours for phases of a project for invoicing",
        "operationId": "WorkHours_GetProjectWorkHours",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: Filter the work hours. If true/false, only the billable/non-billable ones are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "isBilled",
            "in": "query",
            "description": "Optional: Filter the work hours. If true/false, only the ones that are/are not invoiced are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Optional: starting date from which to get the hours. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Optional: starting date to which to get the hours. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "WorkHours",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows/{invoiceRowGuid}/workhours": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the work hours on an invoice row",
        "operationId": "WorkHours_GetInvoiceRowWorkHours",
        "parameters": [
          {
            "name": "invoiceRowGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "WorkHours",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/workhours": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the work hours on an invoice",
        "operationId": "WorkHours_GetInvoiceWorkHours",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "WorkHours",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/uninvoicedworkhours": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get uninvoiced work hours available for invoice",
        "operationId": "WorkHours_GetUninvoicedWorkHoursForInvoice",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "isBillable",
            "in": "query",
            "description": "Optional: Filter the work hours. If true/false, only the billable/non-billable ones are returned. If null, all are returned. Default is null.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "WorkHours",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/projectstatustypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the ProjectStatusTypes",
        "operationId": "ProjectStatusTypes_GetProjectStatusTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all ProjectStatusTypes, if given as true return only active ProjectStatusTypes, if given as false returns only inactive ProjectStatusTypes",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from ProjectStatusType name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc&sortings[1].key=isActive&sortings[1].value=Asc\"",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "All the ProjectStatusTypes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectStatusTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a project status type",
        "operationId": "ProjectStatusTypes_PostProjectStatusType",
        "requestBody": {
          "x-name": "projectStatusType",
          "description": "ProjectStatusTypeModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectStatusTypeModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Project status type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatusTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/projectstatustypes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get projectStatusType by ID",
        "operationId": "ProjectStatusTypes_GetProjectStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the projectStatusType.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectStatusTypeModel"
          }
        ],
        "responses": {
          "200": {
            "description": "projectStatusType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatusTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a projectStatusType or a part of it",
        "operationId": "ProjectStatusTypes_PatchProjectStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the projectStatusType",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectStatusTypeModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProjectStatusTypeModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated business units",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectStatusTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a projectStatusType",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if projectStatusType can't be found.",
        "operationId": "ProjectStatusTypes_DeleteProjectStatusType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the projectStatusType to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectStatusTypeModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the project status type to which to move usages of this project status type. Default null. If project status type is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "ProjectStatusTypeModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/salesstatushistory": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the sales status history for a project",
        "operationId": "SalesStatusHistory_GetSalesStatusHistory",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "The project for which the sales status history is fetched.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Sales status history",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesStatusHistoryOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectforecasts": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get the project forecasts",
        "operationId": "ProjectForecasts_GetForecasts",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "project for the forecasts",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Start date of the date range for the forecasts",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "End date of the date range for the forecasts",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "List of project forecasts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectForecastOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete the project forecasts from a month onward, including the given month.",
        "operationId": "ProjectForecasts_DeleteForecasts",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Project for the forecasts to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "year",
            "in": "query",
            "description": "Year where to start deleting the forecasts",
            "schema": {
              "type": "integer",
              "format": "int32",
              "maximum": 2075.0,
              "minimum": 1900.0
            },
            "x-position": 2
          },
          {
            "name": "month",
            "in": "query",
            "description": "Month where to start deleting the forecasts",
            "schema": {
              "type": "integer",
              "format": "int32",
              "maximum": 12.0,
              "minimum": 1.0
            },
            "x-position": 3
          }
        ],
        "responses": {
          "204": {
            "description": "List of project forecasts."
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectforecasts/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get project forecast by ID",
        "operationId": "ProjectForecasts_GetForecast",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the project forecast.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectForecastOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Project forecast",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectForecastOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Update (Patch) an project forecast or a part of it",
        "operationId": "ProjectForecasts_PatchForecast",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project forecast",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectForecastInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProjectForecastInputModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated Project forecast",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectForecastOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Delete a project forecast",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if product can't be found.",
        "operationId": "ProjectForecasts_DeleteForecast",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the project forecast to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectForecastInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectforecasts": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Insert a project forecast",
        "operationId": "ProjectForecasts_PostForecast",
        "requestBody": {
          "x-name": "projectForecast",
          "description": "ProjectForecastOutputInputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectForecastInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Project forecast",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectForecastOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/bankaccounts": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all bank accounts for current organization.",
        "operationId": "BankAccounts_GetBankAccounts",
        "parameters": [
          {
            "name": "companyGuid",
            "in": "query",
            "description": "Optional: ID of the company.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1,
            "x-relation-guid": "CompanyModel"
          },
          {
            "name": "businessUnitGuid",
            "in": "query",
            "description": "Optional: ID of the business unit.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "active",
            "in": "query",
            "description": "If not given, returns all bank accounts, if given as true returns only active bank accounts, if given as false returns only inactive bank accounts.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from bank account name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 7
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=BankName&sortings[0].value=Desc &sortings[1].key=BusinessUnitName&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 8
          }
        ],
        "responses": {
          "200": {
            "description": "Bank accounts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BankAccountOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/bankaccounts/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get bank account by ID.",
        "operationId": "BankAccounts_GetBankAccount",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the bank account.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "BankAccountOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Bank account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/currencies": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the Currencies",
        "operationId": "Currencies_GetCurrencies",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all Currencies, if given as true return only active Currencies, if given as false returns only inactive Currencies.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text based search applied to the result. Matches currency name and code.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc\". Using additional sorting fields \"CreatedDate\" and / or \"LastUpdatedDate\" as keys sort currencies without a timestamp provided when sorting with other date fields.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "All the Currencies",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CurrencyOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/currencies/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get currency by ID.",
        "operationId": "Currencies_GetCurrency",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the currency.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CurrencyOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "CurrencyModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrencyOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an currency or a part of it.",
        "operationId": "Currencies_PatchCurrency",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the currency.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CurrencyOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of CurrencyModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated currencies.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CurrencyOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/flatrates/{guid}": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get flat rate.",
        "operationId": "FlatRates_GetFlatrate",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id of the flat rate.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FlatRateInputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "FlatRateModel.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlatRateOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "FeesWrite"
        ],
        "summary": "Update (Patch) a flat rate or a part of it.",
        "operationId": "FlatRates_PatchFlatRate",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the flat rate.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FlatRateInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of FlatRateModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated flat rates.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlatRateOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "FeesDelete"
        ],
        "summary": "Delete a flat rate of a phase.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "FlatRates_DeleteFlatRate",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of flat rate.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "FlatRateInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/flatrates": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get project's flat rates.",
        "operationId": "FlatRates_GetFlatratesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Id of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "All the flat rates for the project.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlatRateOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      }
    },
    "/v1/pricelists": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all price lists.",
        "operationId": "PriceLists_GetPricelists",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all price lists, if given as true return only active price lists, if given as false returns only inactive price lists.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from price list name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "currencyGuid",
            "in": "query",
            "description": "Optional: ID of the price list currency.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5,
            "x-relation-guid": "CurrencyOutputModel"
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          },
          {
            "name": "name",
            "in": "query",
            "description": "Optional: Name of the price list.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 8
          }
        ],
        "responses": {
          "200": {
            "description": "All the price lists.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceListOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/pricelists/custom": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Create custom price list for a project. If project already has a custom price list returns existing price list.\nCreates a new price list if project doesn't have a custom price list.\nProject can only have one custom price list.\nNote that project's price list will be changed to the custom price list created here and\nalso existing prices are copied to the new price list.",
        "operationId": "PriceLists_PostCustomPricelist",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "isVolumePricing",
            "in": "query",
            "description": "Get the custom volume pricing price list or regular custom price list. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomPriceListOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/pricelists/{pricelistGuid}/pricelistversions": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all price list versions of a price list.",
        "operationId": "PriceListVersions_GetPricelistVersionsByPricelist",
        "parameters": [
          {
            "name": "pricelistGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PriceListOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Price list versions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PricelistVersionOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/pricelistversions/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get a price list version by guid.",
        "operationId": "PriceListVersions_GetPricelistVersion",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PricelistVersionOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Price list version.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricelistVersionOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/pricelistversions/{pricelistVersionGuid}/productprices": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the product prices for a price list version.",
        "operationId": "ProductPrices_GetProductPrices",
        "parameters": [
          {
            "name": "pricelistVersionGuid",
            "in": "path",
            "required": true,
            "description": "ID of the price list version.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PricelistVersionOutputModel"
          },
          {
            "name": "fromPricelistOnly",
            "in": "query",
            "description": "If true return only prices from the price list, if false also returns prices from the products. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from Product name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate the number of total rows. Default false = total row count is returned as zero.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "productCode",
            "in": "query",
            "description": "Optional: Absolute search for products with specified product code.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "productGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Search all product price(s) by products guid(s).",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 8,
            "x-relation-guid": "ProductOutputModel"
          },
          {
            "name": "isVolumePriced",
            "in": "query",
            "description": "Optional: If true, return only volume priced products. If false, return all non volume priced products. Default is null, which means return all products.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 9
          },
          {
            "name": "productCategoryGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Search product prices according to product category / categories by product category guid(s).",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 10,
            "x-relation-guid": "ProductCategoryModel"
          },
          {
            "name": "productTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Search product prices according to product type / types.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/ProductType"
              }
            },
            "x-position": 11
          }
        ],
        "responses": {
          "200": {
            "description": "Projects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductPriceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/productprices": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the productPrices for a project.",
        "operationId": "ProductPrices_GetProductPricesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "fromPricelistOnly",
            "in": "query",
            "description": "If true return only prices from the price list, if false also returns prices from the products. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from Product name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate the number of total rows. Default false = total row count is returned as zero.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "isAvailable",
            "in": "query",
            "description": "Optional: If true, returns only prices that are available for the project, false returns price that are not available. Default all.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "productCode",
            "in": "query",
            "description": "Optional: Absolute search for products with specified product code.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "productGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Search all product price(s) by products guid(s).",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 9,
            "x-relation-guid": "ProductOutputModel"
          },
          {
            "name": "isVolumePriced",
            "in": "query",
            "description": "Optional: If true, return only volume priced products. If false, return all non volume priced products. Default is null, which means return all products.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 10
          },
          {
            "name": "productCategoryGuids",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Search product prices according to product category / categories by product category guid(s).",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 11,
            "x-relation-guid": "ProductCategoryModel"
          },
          {
            "name": "productTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Search product prices according to product type / types.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/ProductType"
              }
            },
            "x-position": 12
          }
        ],
        "responses": {
          "200": {
            "description": "Projects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductPriceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/productprices/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get product price by ID.",
        "operationId": "ProductPrices_GetProductPrice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the product price.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductPriceOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPriceOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/products/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get product by ID.",
        "operationId": "Products_GetProduct",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the product.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Product.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an product or a part of it.",
        "operationId": "Products_PatchProduct",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the product.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProductModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated products.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a product.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if product can't be found.",
        "operationId": "Products_DeleteProduct",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the product to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProductOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectfees/{guid}": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get projectFee by ID.",
        "operationId": "ProjectFees_GetProjectFee",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the projectFee.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectFeeOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectFeeOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "FeesWrite"
        ],
        "summary": "Update (Patch) a projectFee or a part of it.",
        "operationId": "ProjectFees_PatchProjectFee",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project fee Can also be comma separate list of IDs to patch multiple project fees with one call. When multiple IDs are given, returns model which has list of succeeded project fees and list of errors.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectFeeInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectFeeInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated project fees.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectFeeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "FeesDelete"
        ],
        "summary": "Deletes a project fee.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectFees_DeleteProjectFree",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project fee.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectFeeInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectmembercostexceptions/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get project member cost exception by ID.",
        "operationId": "ProjectMemberCostExceptions_GetProjectMemberCostException",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the cost exception.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectMemberCostExceptionInputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Link.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectMemberCostExceptionOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) project member cost exception.",
        "operationId": "ProjectMemberCostExceptions_Patch",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project member cost exception.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectMemberCostExceptionInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectMemberCostExceptionModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated links.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectMemberCostExceptionOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a project member cost exception.",
        "description": "Deletes project member cost exception. Returns: No Content (204) if succeeded.",
        "operationId": "ProjectMemberCostExceptions_Delete",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project member cost exception.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectMemberCostExceptionInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/projectmembercostexceptions": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get all cost exceptions of project members for user.",
        "operationId": "ProjectMemberCostExceptions_GetProjectMemberCostExceptionsForUser",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "Guid of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "isProjectClosed",
            "in": "query",
            "description": "Search only for open or closed projects. Default all projects.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "All the member cost exceptions for one project.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectMemberCostExceptionOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectmembercostexceptions": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all cost exceptions of project members for a project.",
        "operationId": "ProjectMemberCostExceptions_GetProjectMemberCostExceptionsForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Guid of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "userGuid",
            "in": "query",
            "description": "Optional: Guid of the user.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "All the member cost exceptions for one project.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectMemberCostExceptionOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/projectmembercostexceptions": {
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Add a cost exception to a project member.",
        "operationId": "ProjectMemberCostExceptions_Post",
        "requestBody": {
          "x-name": "model",
          "description": "ProjectMemberCostExceptionModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectMemberCostExceptionInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Inserted link.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectMemberCostExceptionOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/projectrecurringfeerules": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get the recurring fee rules.",
        "operationId": "ProjectRecurringFeeRules_GetProjectRecurringFeeRules",
        "parameters": [
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "productType",
            "in": "query",
            "description": "projectRecurringFeeRule's product type. if given, it filters the projectRecurringFeeRules by the given type.",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get recurring fee rules that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "List of updated project recurring fee rules",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectRecurringFeeRuleOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "FeesWrite"
        ],
        "summary": "Insert a projectRecurringFeeRule.",
        "operationId": "ProjectRecurringFeeRules_PostProjectRecurringFeeRule",
        "requestBody": {
          "x-name": "projectRecurringFeeRule",
          "description": "ProjectRecurringFeeRuleModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectRecurringFeeRuleInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created ProjectRecurringFeeRules.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectRecurringFeeRuleOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:write"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/projectrecurringfeerules": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get all the Recurring Fee Rules for a project",
        "operationId": "ProjectRecurringFeeRules_GetProjectRecurringFeeRulesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project to get the recurring fee rules.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "productType",
            "in": "query",
            "description": "projectRecurringFeeRule's product type. if given, it filters the projectRecurringFeeRules by the given type.",
            "schema": {
              "$ref": "#/components/schemas/ProductType"
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "isBillablePeriodInFuture",
            "in": "query",
            "description": "Optional. Filter the project recurring fee rules. If true/false, only the ones that will be billable in the future are returned. If null, all are returned. Default is false.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "billableTimePeriod",
            "in": "query",
            "description": "the time period for any uninvoiced recurring rules.",
            "schema": {
              "$ref": "#/components/schemas/BillablePeriod"
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "List of updated project recurring fee rules",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectRecurringFeeRuleOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      }
    },
    "/v1/projectrecurringfeerules/{guid}": {
      "get": {
        "tags": [
          "FeesRead"
        ],
        "summary": "Get project's RecurringFeeRule by ID.",
        "operationId": "ProjectRecurringFeeRules_GetProjectRecurringFeeRule",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the ProjectRecurringFeeRule.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectRecurringFeeRuleOutputModel"
          },
          {
            "name": "includeInactive",
            "in": "query",
            "description": "Indicates the rule should be returned even if it is not active. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "List of updated project recurring fee rules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectRecurringFeeRuleOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "FeesWrite"
        ],
        "summary": "Update (Patch) a projectRecurringFeeRule or a part of it.",
        "operationId": "ProjectRecurringFeeRules_PatchProjectRecurringFeeRule",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the projectRecurringFeeRule.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectRecurringFeeRuleInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectRecurringFeeRuleModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated projectRecurringFeeRules.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectRecurringFeeRuleOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "FeesDelete"
        ],
        "summary": "Deletes a projectRecurringFeeRule.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectRecurringFeeRules_DeleteProjectRecurringFeeRule",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project recurring fee rule.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectRecurringFeeRuleInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "fees:delete"
            ]
          }
        ]
      }
    },
    "/v1/projecttravelexpenses/{guid}": {
      "get": {
        "tags": [
          "TravelsRead"
        ],
        "summary": "Get project travel expense by ID.",
        "operationId": "ProjectTravelExpenses_GetProjectTravelExpense",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the project travel expense.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTravelExpenseOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ProjectTravelExpenseOutputModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "TravelsWrite"
        ],
        "summary": "Update (Patch) a project travel expense or a part of it.",
        "operationId": "ProjectTravelExpenses_PatchProjectTravelExpense",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project travel expense.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTravelExpenseInputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ProjectTravelExpenseInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated project travel expenses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "TravelsDelete"
        ],
        "summary": "Deletes a project travel expense.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectTravelExpenses_DeleteProjectTravelExpense",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the project travel expense.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTravelExpenseInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "travels:delete"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/reimbursedprojecttravelexpenses": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project travel expenses on an invoice.",
        "operationId": "ReimbursedProjectTravelExpenses_GetInvoiceProjectTravelExpenses",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Searched string: part of name or description.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional. If true, calculates the total count of project fees. Default false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc&sortings[1].key=Number&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "ReimbursedProjectTravelExpenses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReimbursedProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows/{invoiceRowGuid}/reimbursedprojecttravelexpenses": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all the project travel expenses on an invoice row.",
        "operationId": "ReimbursedProjectTravelExpenses_GetInvoiceRowProjectTravelExpenses",
        "parameters": [
          {
            "name": "invoiceRowGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Searched string: part of name or description.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional. If true, calculates the total count of project fees. Default false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=Name&sortings[0].value=Desc&sortings[1].key=Number&sortings[1].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "ReimbursedProjectTravelExpenses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReimbursedProjectTravelExpenseOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoices/{invoiceGuid}/reimbursedworkhours": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all reimbursed hours on an invoice.",
        "operationId": "ReimbursedWorkHours_GetInvoiceReimbursedWorkHours",
        "parameters": [
          {
            "name": "invoiceGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from description or invoice description.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=DueDate&sortings[0].value=Asc&sortings[1].key=TotalIncludingTax&sortings[1].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "ReimbursedWorkHour.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReimbursedWorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/invoicerows/{invoiceRowGuid}/reimbursedworkhours": {
      "get": {
        "tags": [
          "InvoicesRead"
        ],
        "summary": "Get all reimbursed hours on an invoice row.",
        "operationId": "ReimbursedWorkHours_GetInvoiceRowReimbursedWorkHours",
        "parameters": [
          {
            "name": "invoiceRowGuid",
            "in": "path",
            "required": true,
            "description": "ID of the invoice row.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from description or invoice description.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (sub-model fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=DueDate&sortings[0].value=Asc&sortings[1].key=TotalIncludingTax&sortings[1].value=Desc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "ReimbursedWorkHour.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReimbursedWorkHourOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "invoices:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/teamproductivity": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get team productivity of a project.",
        "operationId": "TeamProductivity_GetTeamProductivity",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "List of project members with team productivity information.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeamProductivityOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/travelexpensetypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the travel expense types.",
        "operationId": "TravelExpenseTypes_GetTravelExpenseTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all travel expense types, if given as true return only active travel expense types, if given as false returns only inactive travel expense types.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Searched string: part of name or code.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "code",
            "in": "query",
            "description": "Optional: Code of the travel expense type.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=IsActive&sortings[0].value=Asc&sortings[1].key=Name&sortings[1].value=Desc.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 7
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get travel expense types that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 8
          }
        ],
        "responses": {
          "200": {
            "description": "All the travel expense types.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelExpenseTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a new travel expense type.",
        "operationId": "TravelExpenseTypes_PostTravelExpenseType",
        "requestBody": {
          "x-name": "travelExpenseType",
          "description": "TravelExpenseTypeInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/TravelExpenseTypeInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created travel expense type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelExpenseTypeOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/travelexpensetypes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get travel expense type by guid.",
        "operationId": "TravelExpenseTypes_GetTravelExpenseType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the travel expense type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelExpenseTypeOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Travel expense type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelExpenseTypeOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an travel expense type or a part of it.",
        "operationId": "TravelExpenseTypes_PatchTravelExpenseType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Guid of the travel expense type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelExpenseTypeOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of TravelExpenseTypeInputModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated travel expense types.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelExpenseTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a travel expense type.",
        "operationId": "TravelExpenseTypes_DeleteTravelExpenseType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Guid for the travel expense type to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelExpenseTypeOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/travelexpensetypes": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Search active travel expense types of project by part of the name or code.",
        "operationId": "TravelExpenseTypes_GetSearchedTravelExpenseTypes",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Id of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Searched string: part of name or code.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "userGuid",
            "in": "query",
            "description": "Optional: Id of the user to fetch travels for.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "expenseClass",
            "in": "query",
            "description": "Optional: Expense class of the travel. Mileage/DailyAllowance/OtherTravelExpense.",
            "schema": {
              "$ref": "#/components/schemas/ExpensesClass"
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "All the Travel expense types matching search criteria.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelExpenseTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/pricelistversions/{pricelistVersionGuid}/travelprices": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the travel prices for a price list version.",
        "operationId": "TravelPrices_GetTravelPrices",
        "parameters": [
          {
            "name": "pricelistVersionGuid",
            "in": "path",
            "required": true,
            "description": "ID of the price list version.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PricelistVersionOutputModel"
          },
          {
            "name": "fromPricelistOnly",
            "in": "query",
            "description": "If true return only prices from the price list, if false also returns prices from the products. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          },
          {
            "name": "expenseClasses",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of expense classes to search by, defaults to all travel categories.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/ExpensesClass"
              }
            },
            "x-position": 3
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from Product name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate the number of total rows. Default false = total row count is returned as zero.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "TravelPriceModel.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelPriceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/travelprices": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the travel prices for a project.",
        "operationId": "TravelPrices_GetTravelPricesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "ID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "fromPricelistOnly",
            "in": "query",
            "description": "If true return only prices from the price list, if false also returns prices from the settings. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 2
          },
          {
            "name": "expenseClasses",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: List of expense classes to search by, defaults to all travel categories.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/ExpensesClass"
              }
            },
            "x-position": 3
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from Product name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate the number of total rows. Default false = total row count is returned as zero.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "TravelPriceModel.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelPriceOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/travelprices/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get travel price by ID.",
        "operationId": "TravelPrices_GetTravelPrice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the travel price.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelPriceOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelPriceOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{guid}": {
      "get": {
        "tags": [
          "UsersRead"
        ],
        "summary": "Get user by ID.",
        "operationId": "Users_GetUser",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "User.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "UsersWrite"
        ],
        "summary": "Update (Patch) an user or a part of it.",
        "operationId": "Users_PatchUser",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of UserModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated users.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "UsersDelete"
        ],
        "summary": "Delete an user.",
        "description": "No Content (204) if succeeded. Bad Request (400) if user can't be deleted. Not Found (404) if the user can't be found.",
        "operationId": "Users_DeleteUser",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "users:delete"
            ]
          }
        ]
      }
    },
    "/v1/worktypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all work types.",
        "operationId": "WorkTypes_GetWorkTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "Filter the work types. If true/false, only the active/inactive ones are returned. If null, all the work types are returned.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "productive",
            "in": "query",
            "description": "Filter the work types. If true/false, only the productive/non-productive ones are returned. If null, all the work types are returned.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from work type name or code.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "code",
            "in": "query",
            "description": "Optional: Code of the work type.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get work types that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 8
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 9
          }
        ],
        "responses": {
          "200": {
            "description": "All the work types matching search criteria.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a work type.",
        "operationId": "WorkTypes_PostWorkType",
        "requestBody": {
          "x-name": "workTypeModel",
          "description": "WorkTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/WorkTypeInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created work type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkTypeOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/worktypes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get work type by ID.",
        "operationId": "WorkTypes_GetWorkType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the work type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkTypeOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkTypeOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a work type or a part of it.",
        "operationId": "WorkTypes_PatchWorkType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the work type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkTypeOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of WorkTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated work types.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkTypeOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a work type.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "WorkTypes_DeleteWorkType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the work type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "WorkTypeOutputModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the work type to which to move usages of this work type. Default null. If work type is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "WorkTypeOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/worktypesforproject": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Search active work types by part of the name or code.",
        "operationId": "WorkTypes_GetSearchedWorktypes",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "Id of the case to which proposal is connected.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Searched string: part of name or code.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "All the work types matching search criteria.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorktypeForProjectOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/signout": {
      "post": {
        "tags": [
          "NoScope"
        ],
        "summary": "Logout. Invalidates refresh token. Access token will be invalid when it expires.",
        "operationId": "PublicBearerAuthentication_Logout",
        "requestBody": {
          "x-name": "refreshToken",
          "content": {
            "application/json": {
              "schema": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/v1/login/oauth/authorize": {
      "get": {
        "tags": [
          "NoScope"
        ],
        "summary": "Get the oAuth2 authorization code flow code.",
        "operationId": "PublicBearerAuthentication_GetAuthorizationCode",
        "parameters": [
          {
            "name": "response_type",
            "in": "query",
            "description": "code",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "state",
            "in": "query",
            "description": "Unguessable random string.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "client_id",
            "in": "query",
            "description": "Client id.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "description": "Url where to redirect after code has been retrieved.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "scope",
            "in": "query",
            "description": "Scopes that client requests. If scopes that are not allowed for the client are requested, returns unauthorized.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "302": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/v1/customers/{guid}": {
      "get": {
        "tags": [
          "CustomersRead"
        ],
        "summary": "Get customer by GUID.",
        "operationId": "Customers_GetCustomer",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID used to get the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "CustomersWrite"
        ],
        "summary": "Update (Patch) an customer or a part of it.",
        "operationId": "Customers_PatchCustomer",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of CustomerModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated customers.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CustomersDelete"
        ],
        "summary": "Deletes a customer.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "Customers_DeleteCustomer",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "CustomerModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "customers:delete"
            ]
          }
        ]
      }
    },
    "/v1/integrations/vismafinancials/companyinformation": {
      "get": {
        "tags": [
          "OrganizationRead"
        ],
        "summary": "Get Visma.net Financials integration company information.",
        "operationId": "Organizations_GetVismaFinancialsCompanyInfo",
        "responses": {
          "403": {
            "description": "Addon required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "200": {
            "description": "VismaFinancialsCompanyModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VismaFinancialsCompanyModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "organization:read"
            ]
          }
        ]
      }
    },
    "/v1/pricelistversions/{pricelistVersionGuid}/overtimeprices": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the overtime prices for a price list version.",
        "operationId": "OvertimePrices_GetOvertimePrices",
        "parameters": [
          {
            "name": "pricelistVersionGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PricelistVersionOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Projects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OvertimePriceModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/overtimeprices": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get all the overtimePrices for a project.",
        "operationId": "OvertimePrices_GetOvertimePricesForProject",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Projects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OvertimePriceModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/overtimeprices/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get overtime price by ID.",
        "operationId": "OvertimePrices_GetOvertimePrice",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the overtime price.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "OvertimePriceModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OvertimePriceModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/overtimes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get overtime definitions.",
        "operationId": "Overtimes_GetOvertimes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all overtime definitions, if given as true return only active overtime definitions, if given as false returns only inactive overtime definitions.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default all.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from overtime name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc\"\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "Overtime definitions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OvertimeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert an overtime.",
        "operationId": "Overtimes_PostOvertime",
        "requestBody": {
          "x-name": "overtime",
          "description": "OvertimeModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/OvertimeModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created overtime.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OvertimeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/overtimes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get overtime definition by ID.",
        "operationId": "Overtimes_GetOvertime",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the overtime definition.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "OvertimeModel"
          }
        ],
        "responses": {
          "200": {
            "description": "OvertimeModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OvertimeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an overtime or a part of it.",
        "operationId": "Overtimes_PatchOvertime",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the overtime.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "OvertimeModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of OvertimeModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of overtimes.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OvertimeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete an overtime.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if overtime can't be found.",
        "operationId": "Overtimes_DeleteOvertime",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the overtime to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "OvertimeModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/phasemembersfrombusinessunitusers": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Adds business unit users to phase members.",
        "description": "Users are always added as a root phase (project) member also.",
        "operationId": "PhaseMembers_PostPhaseMembersFromBusinessUnitUsers",
        "parameters": [
          {
            "name": "addToAllSubPhases",
            "in": "query",
            "description": "Optional: Add member to all sub phases. Default true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "memberModel",
          "description": "PhaseMemberModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/PhaseMembersFromBusinessUnitUsersModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "List of added members.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhaseMemberModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/phasemembers/{userGuid}": {
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes a phase member",
        "description": "Returns: No Content (204) if succeeded. Only one of transferToRoleGuid and transferToUserGuid can be provided. Use root phase to delete a project member.",
        "operationId": "PhaseMembers_DeletePhaseMember",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the phase member to remove",
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "resourceAllocationAction",
            "in": "query",
            "description": "Optional: The action to be applied to the user's resource allocations",
            "schema": {
              "default": "None",
              "$ref": "#/components/schemas/ResourceAllocationAction"
            },
            "x-position": 3
          },
          {
            "name": "transferToUserGuid",
            "in": "query",
            "description": "Optional: GUID of the user to whom the resource allocations are transferred.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4,
            "x-relation-guid": "UserOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "memberModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/PhaseMemberModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectbillingcustomers": {
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a billing customer for a project.",
        "operationId": "ProjectBillingCustomers_PostProjectBillingCustomer",
        "requestBody": {
          "x-name": "projectBillingCustomer",
          "description": "ProjectBillingCustomerModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectBillingCustomerModel2"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created billing customer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectBillingCustomerModel2"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/projectbillingcustomers/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get a project billing customer.",
        "operationId": "ProjectBillingCustomers_GetProjectBillingCustomer",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project billing customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectBillingCustomerModel2"
          }
        ],
        "responses": {
          "200": {
            "description": "Project billing customer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectBillingCustomerModel2"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a project billing customer.",
        "operationId": "ProjectBillingCustomers_PatchProjectBillingCustomer",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the project billing customer.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectBillingCustomerModel2"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProjectBillingCustomerModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated project billing customer.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectBillingCustomerModel2"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a project billing customer.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectBillingCustomers_DeleteProjectBillingCustomer",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the project billing customer to remove.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectBillingCustomerModel2"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projectproducts/{guid}": {
      "delete": {
        "tags": [
          "ProjectsDelete"
        ],
        "summary": "Deletes a project product.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "ProjectProducts_DeleteProjectProduct",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the project product to remove.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectProductInputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:delete"
            ]
          }
        ]
      }
    },
    "/v1/projecttaskstatuses": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the project task statuses.",
        "operationId": "ProjectTaskStatuses_GetProjectTaskStatuses",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "If not given, return all project task statuses, if given as true return only active project task statuses, if given as false returns only inactive project task statuses.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from activity type name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "List of Activity Types.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTaskStatusModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a project task status.",
        "operationId": "ProjectTaskStatuses_PostProjectTaskStatus",
        "requestBody": {
          "x-name": "projectTaskStatus",
          "description": "ProjectTaskStatusModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ProjectTaskStatusModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Project task status. ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTaskStatusModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/projecttaskstatuses/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get Project task status by ID.",
        "operationId": "ProjectTaskStatuses_GetProjectTaskStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the Project task status.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTaskStatusModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Project task status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTaskStatusModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) an Project task status or a part of it.",
        "operationId": "ProjectTaskStatuses_PatchProjectTaskStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the Project task status.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTaskStatusModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of ProjectTaskStatusModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated Project task status.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectTaskStatusModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a project task status.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if product can't be found.",
        "operationId": "ProjectTaskStatuses_DeleteProjectTaskStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the project task status to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectTaskStatusModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the project task status to which to move usages of this project task status. Default null.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "ProjectTaskStatusModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/timeentries": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get the time entries.",
        "operationId": "TimeEntries_GetTimeEntries",
        "parameters": [
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "phaseGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Filters time entries for given phases.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 2,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "timeEntryTypeGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Filters time entries for given time entry types.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 3,
            "x-relation-guid": "TimeEntryTypeModel"
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get time entries that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeEntryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "HoursWrite"
        ],
        "summary": "Insert a time entry.",
        "operationId": "TimeEntries_PostTimeEntry",
        "requestBody": {
          "x-name": "timeEntry",
          "description": "TimeEntryModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/TimeEntryModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created time entry.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeEntryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:write"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/timeentries": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get all the time entries for a user.",
        "operationId": "TimeEntries_GetTimeEntriesForUser",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "description": "ID of the user.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Optional: starting date from which to get the time entries. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Optional: starting date to which to get the time entries. Default all.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "phaseGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Filters time entries for given phases.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 4,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "timeEntryTypeGuid",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: Filters time entries for given time entry types.",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "type": "string"
              }
            },
            "x-position": 5,
            "x-relation-guid": "TimeEntryTypeModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "TimeEntries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeEntryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      }
    },
    "/v1/timeentries/{guid}": {
      "get": {
        "tags": [
          "HoursRead"
        ],
        "summary": "Get time entry by ID.",
        "operationId": "TimeEntries_GetTimeEntry",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "Id used to get the time entry.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TimeEntryModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "HoursWrite"
        ],
        "summary": "Update (Patch) a time entry or a part of it.",
        "operationId": "TimeEntries_PatchTimeEntry",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the time entry.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TimeEntryModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of TimeEntryModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated time entries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeEntryModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "HoursDelete"
        ],
        "summary": "Deletes a time entry.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "TimeEntries_DeleteTimeEntry",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the time entry.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TimeEntryModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "hours:delete"
            ]
          }
        ]
      }
    },
    "/v1/timeentrytypes": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all time entry types.",
        "operationId": "TimeEntryTypes_GetTimeEntryTypes",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "Filter the time entry types. If true/false, only the active/inactive ones are returned. If null, all the time entry types are returned.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from time entry type name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculates the total row count.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "Projects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeEntryTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a time entry type.",
        "operationId": "TimeEntryTypes_PostTimeEntryType",
        "requestBody": {
          "x-name": "timeEntryTypeModel",
          "description": "TimeEntryTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/TimeEntryTypeModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created time entry type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/timeentrytypes/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get time entry type by ID.",
        "operationId": "TimeEntryTypes_GetTimeEntryType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID used to get the time entry type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TimeEntryTypeModel"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryTypeModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a time entry type or a part of it.",
        "operationId": "TimeEntryTypes_PatchTimeEntryType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the time entry type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TimeEntryTypeModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of TimeEntryTypeModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "Updated time entry type model.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeEntryTypeModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Deletes a time entry type.",
        "description": "Returns: No Content (204) if succeeded.",
        "operationId": "TimeEntryTypes_DeleteTimeEntryType",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to delete the time entry type.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TimeEntryTypeModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/localization/timezones": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get all the timezones.",
        "operationId": "Timezones_GetTimezones",
        "responses": {
          "200": {
            "description": "All the Timezones.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimezoneModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/localization/timezones/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get timezone by ID.",
        "operationId": "Timezones_GetTimezone",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the timezone.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TimezoneModel"
          }
        ],
        "responses": {
          "200": {
            "description": "Timezone.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimezoneModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      }
    },
    "/v1/travelreimbursementstatuses": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the travel reimbursement statuses.",
        "operationId": "TravelReimbursementStatus_GetTravelReimbursementStatuses",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "Optional: Filter the travel reimbursement statuses. If true/false, only the active/inactive ones are returned. If null, all the travel reimbursement statuses are returned.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "textToSearch",
            "in": "query",
            "description": "Optional: Text to search from travel reimbursement name.",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Any sortable field name (submodel fields not supported) in the model can be used, while value can be \"Desc\" or \"Asc\". Example: \"?sortings[0].key=name&sortings[0].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelReimbursementStatusModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Insert a travel reimbursement status.",
        "operationId": "TravelReimbursementStatus_PostTravelReimbursementStatus",
        "requestBody": {
          "x-name": "travelReimbursementStatus",
          "description": "TravelReimbursementStatusModel.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/TravelReimbursementStatusModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created travel reimbursement status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelReimbursementStatusModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      }
    },
    "/v1/travelreimbursementstatuses/{guid}": {
      "get": {
        "tags": [
          "SettingsRead"
        ],
        "summary": "Get the travel reimbursement statuses by guid.",
        "operationId": "TravelReimbursementStatus_GetTravelReimbursementStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "reimbursement status id to get.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementStatusModel"
          }
        ],
        "responses": {
          "200": {
            "description": "TravelReimbursementStatusModel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelReimbursementStatusModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "SettingsWrite"
        ],
        "summary": "Update (Patch) a travel reimbursement status or a part of it.",
        "operationId": "TravelReimbursementStatus_PatchTravelReimbursementStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the travel reimbursement status.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementStatusModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON patch document of TravelReimbursementStatusModel.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "list of updated travel reimbursement statuses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelReimbursementStatusModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "SettingsDelete"
        ],
        "summary": "Delete a travel reimbursement status.",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if travel reimbursement status can't be found.",
        "operationId": "TravelReimbursementStatus_DeleteTravelReimbursementStatus",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID for the travel reimbursement status to delete.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "TravelReimbursementStatusModel"
          },
          {
            "name": "moveUsagesToGuid",
            "in": "query",
            "description": "Optional: ID of the travel reimbursement status to which to move usages of this travel reimbursement status. Default null. If travel reimbursement status is in use and usages aren't moved the deletion might fail.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2,
            "x-relation-guid": "TravelReimbursementStatusModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "settings:delete"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/deputyprojectowners": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get deputy project owners of a project",
        "operationId": "DeputyProjectOwners_GetDeputyProjectOwners",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "description": "GUID of the project.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "firstRow",
            "in": "query",
            "description": "Optional: first row to fetch. Default 0 = first row.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: How many rows to fetch, Default 20, maximum 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "calculateRowCount",
            "in": "query",
            "description": "Optional: Calculate total number of rows.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 4
          },
          {
            "name": "sortings",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional: A list of Key-Value pairs, containing names of fields and directions by which the results should be sorted. Example: \"?sortings[0].key=name&sortings[0].value=Asc\".",
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/KeyValuePairOfStringAndSortDirection"
              }
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "All deputy project owners of the project",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeputyProjectOwnerOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      }
    },
    "/v1/deputyprojectowners/{guid}": {
      "get": {
        "tags": [
          "ProjectsRead"
        ],
        "summary": "Get a deputy project owner by GUID",
        "operationId": "DeputyProjectOwners_GetDeputyProjectOwner",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the deputy project owner.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "DeputyProjectOwnerOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "The deputy project owner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeputyProjectOwnerOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Delete a deputy project owner",
        "operationId": "DeputyProjectOwners_DeleteDeputyProjectOwner",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID of the deputy project owner.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "DeputyProjectOwnerOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/deputyprojectowners": {
      "post": {
        "tags": [
          "ProjectsWrite"
        ],
        "summary": "Add a deputy project owner to a project",
        "operationId": "DeputyProjectOwners_PostDeputyProjectOwner",
        "requestBody": {
          "x-name": "inputModel",
          "description": "Deputy project owner to add. ProjectGuid and User are required.",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/DeputyProjectOwnerInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "The created deputy project owner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeputyProjectOwnerOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "projects:write"
            ]
          }
        ]
      }
    },
    "/v1/resourceallocations": {
      "get": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get resource allocations",
        "operationId": "ResourceAllocations_GetResourceAllocations",
        "parameters": [
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get resource allocations that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "ResourceAllocation",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "ResourceallocationsWrite"
        ],
        "summary": "Insert a resource allocation",
        "operationId": "ResourceAllocations_PostResourceAllocation",
        "requestBody": {
          "x-name": "resourceAllocation",
          "description": "ResourceAllocationInputModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ResourceAllocationInputModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created resource allocation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:write"
            ]
          }
        ]
      }
    },
    "/v1/resourceallocations/allocations": {
      "post": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get resource allocations (its POST because of being able to accommodate more filters)",
        "operationId": "ResourceAllocations_PostResourceAllocations",
        "parameters": [
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get resource allocations that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "resourceAllocationCriteriaModel",
          "description": "resourceAllocationCriteriaModel",
          "content": {
            "application/json": {
              "schema": {
                "nullable": true,
                "$ref": "#/components/schemas/ResourceAllocationCriteriaModel"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "ResourceAllocationModel",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      }
    },
    "/v1/users/{userGuid}/resourceallocations/allocations": {
      "get": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get resource allocations for a user with required filters (startDate and endDate or changedSince, max 30 days to be fetched at once)",
        "operationId": "ResourceAllocations_GetResourceAllocationsByUserGuid",
        "parameters": [
          {
            "name": "userGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Get resource allocations with startDate. Using startDate and endDate or changedSince parameters are required to fetch a maximum of 30 days",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Get resource allocations with endDate. Using startDate and endDate or changedSince parameters are required to fetch a maximum of 30 days",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get resource allocations that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "userLicenseTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/LicenseUserType"
              }
            },
            "x-position": 5
          },
          {
            "name": "phaseGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "projectGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "projectBusinessUnitGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 8,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "userBusinessUnitGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 9,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "projectManagerUserGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 10,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "userTagGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 11,
            "x-relation-guid": "UserKeywordModel"
          },
          {
            "name": "useSalesProbability",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 12
          },
          {
            "name": "projectStatusTypeGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 13,
            "x-relation-guid": "ProjectStatusTypeModel"
          },
          {
            "name": "projectTagGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 14,
            "x-relation-guid": "ProjectKeywordModel"
          },
          {
            "name": "superiorUserGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 15,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "salesStatusTypeGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 16,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          },
          {
            "name": "resourceAllocationGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 17,
            "x-relation-guid": "ResourceAllocationOutputModel"
          },
          {
            "name": "salesProgress",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SalesProgress"
            },
            "x-position": 18
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 19
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectGuid}/resourceallocations/allocations": {
      "get": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get resource allocations for a project with required filters (startDate and endDate or changedSince, max 30 days to be fetched at once)",
        "operationId": "ResourceAllocations_GetResourceAllocationsByProjectGuid",
        "parameters": [
          {
            "name": "projectGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Get resource allocations with startDate. Using startDate and endDate or changedSince parameters are required to fetch a maximum of 30 days",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Get resource allocations with endDate. Using startDate and endDate or changedSince parameters are required to fetch a maximum of 30 days",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get resource allocations that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "userLicenseTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/LicenseUserType"
              }
            },
            "x-position": 5
          },
          {
            "name": "phaseGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "userGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "projectBusinessUnitGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 8,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "userBusinessUnitGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 9,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "projectManagerUserGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 10,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "userTagGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 11,
            "x-relation-guid": "UserKeywordModel"
          },
          {
            "name": "useSalesProbability",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 12
          },
          {
            "name": "projectStatusTypeGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 13,
            "x-relation-guid": "ProjectStatusTypeModel"
          },
          {
            "name": "projectTagGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 14,
            "x-relation-guid": "ProjectKeywordModel"
          },
          {
            "name": "superiorUserGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 15,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "salesStatusTypeGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 16,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          },
          {
            "name": "resourceAllocationGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 17,
            "x-relation-guid": "ResourceAllocationOutputModel"
          },
          {
            "name": "salesProgress",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SalesProgress"
            },
            "x-position": 18
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 19
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      }
    },
    "/v1/phases/{phaseGuid}/resourceallocations/allocations": {
      "get": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get resource allocations for a phase with required filters (startDate and endDate or changedSince, max 30 days to be fetched at once)",
        "operationId": "ResourceAllocations_GetResourceAllocationsByPhaseGuid",
        "parameters": [
          {
            "name": "phaseGuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "PhaseOutputModel"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Get resource allocations with startDate. Using startDate and endDate or changedSince parameters are required to fetch a maximum of 30 days",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Get resource allocations with endDate. Using startDate and endDate or changedSince parameters are required to fetch a maximum of 30 days",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "changedSince",
            "in": "query",
            "description": "Optional: Get resource allocations that have been added or changed after this date time (greater or equal).",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "userLicenseTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "nullable": true,
              "items": {
                "$ref": "#/components/schemas/LicenseUserType"
              }
            },
            "x-position": 5
          },
          {
            "name": "projectGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6,
            "x-relation-guid": "ProjectOutputModel"
          },
          {
            "name": "userGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "projectBusinessUnitGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 8,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "userBusinessUnitGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 9,
            "x-relation-guid": "BusinessUnitModel"
          },
          {
            "name": "projectManagerUserGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 10,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "userTagGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 11,
            "x-relation-guid": "UserKeywordModel"
          },
          {
            "name": "useSalesProbability",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 12
          },
          {
            "name": "projectStatusTypeGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 13,
            "x-relation-guid": "ProjectStatusTypeModel"
          },
          {
            "name": "projectTagGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 14,
            "x-relation-guid": "ProjectKeywordModel"
          },
          {
            "name": "superiorUserGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 15,
            "x-relation-guid": "UserOutputModel"
          },
          {
            "name": "salesStatusTypeGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 16,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          },
          {
            "name": "resourceAllocationGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 17,
            "x-relation-guid": "ResourceAllocationOutputModel"
          },
          {
            "name": "salesProgress",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SalesProgress"
            },
            "x-position": 18
          },
          {
            "name": "rowCount",
            "in": "query",
            "description": "Optional: Number of rows to fetch.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 19
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Optional: page token to fetch the next page.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "NextPageToken": {
                "description": "Page token to fetch the next page",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      }
    },
    "/v1/resourceallocations/{guid}": {
      "get": {
        "tags": [
          "ResourceallocationsRead"
        ],
        "summary": "Get resource allocation by ID",
        "operationId": "ResourceAllocations_GetResourceAllocation",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "GUID used to get the resource allocation.",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ResourceAllocationOutputModel"
          }
        ],
        "responses": {
          "200": {
            "description": "ResourceAllocation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:read"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "ResourceallocationsWrite"
        ],
        "summary": "Update (Patch) a resource allocation or a part of it",
        "operationId": "ResourceAllocations_PatchResourceAllocation",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the resource allocation",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ResourceAllocationOutputModel"
          }
        ],
        "requestBody": {
          "x-name": "patchDocument",
          "description": "JSON Patch document of ResourceAllocationModel",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/PatchOperation"
                }
              }
            }
          },
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "List of updated activities",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceAllocationOutputModel"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "ResourceallocationsDelete"
        ],
        "summary": "Delete an resource allocation",
        "description": "Returns: No Content (204) if succeeded. Not found (404) if resource allocation can't be found.",
        "operationId": "ResourceAllocations_DeleteResourceAllocation",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "required": true,
            "description": "ID of the resource allocation to delete",
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "x-relation-guid": "ResourceAllocationOutputModel"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "description": "Default error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExceptionModel"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "security": [
          {
            "OAuth2": [
              "resourceallocations:delete"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AddressModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "addressline": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "isBillingAddress": {
            "type": "boolean"
          },
          "isPostalAddress": {
            "type": "boolean"
          },
          "isVisitAddress": {
            "type": "boolean"
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "nullable": true,
            "$ref": "#/components/schemas/AddressCountry",
            "x-relation": "CountryModel"
          },
          "countryRegion": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CountryRegionModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/AddressCustomer",
            "x-relation": "CustomerModel"
          },
          "contacts": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ModelWithName"
            },
            "x-relation": "ContactModel"
          }
        }
      },
      "UserWithFirstNameLastNameAndPhotoFileModel": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AddressCountry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "hasRegions": {
            "readOnly": true,
            "$ref": "#/components/schemas/CountryRegionsStatus"
          }
        }
      },
      "CountryRegionsStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "NoRegion",
          "Unknown",
          "HasRegions"
        ],
        "enum": [
          "NoRegion",
          "Unknown",
          "HasRegions"
        ]
      },
      "ModelWithName": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AddressCustomer": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ExceptionModel": {
        "type": "object",
        "properties": {
          "error": {
            "nullable": true,
            "$ref": "#/components/schemas/ErrorModel"
          }
        }
      },
      "ErrorModel": {
        "type": "object",
        "properties": {
          "httpStatusCode": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/ExceptionTypeEnum"
          },
          "details": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ExceptionDetailModel"
            }
          },
          "stack": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExceptionTypeEnum": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "InternalSystemError",
          "AuthenticationRequired",
          "AddonMissing",
          "FeatureIsNotEnabled",
          "InvalidParameter",
          "InvalidOperation",
          "InvalidRequest",
          "InsufficientApiScope",
          "InvalidApiVersion",
          "ConfigurationError",
          "UserLicenseType",
          "TermsOfServiceNotApproved",
          "HttpsRequired",
          "OrganizationNotActive",
          "PermissionDenied",
          "TrialExpired",
          "NotAvailableInTrial",
          "InvalidRecaptcha",
          "AddonMissingTermsOfServiceApproval",
          "ExcludedFromTrial"
        ],
        "enum": [
          "InternalSystemError",
          "AuthenticationRequired",
          "AddonMissing",
          "FeatureIsNotEnabled",
          "InvalidParameter",
          "InvalidOperation",
          "InvalidRequest",
          "InsufficientApiScope",
          "InvalidApiVersion",
          "ConfigurationError",
          "UserLicenseType",
          "TermsOfServiceNotApproved",
          "HttpsRequired",
          "OrganizationNotActive",
          "PermissionDenied",
          "TrialExpired",
          "NotAvailableInTrial",
          "InvalidRecaptcha",
          "AddonMissingTermsOfServiceApproval",
          "ExcludedFromTrial"
        ]
      },
      "ExceptionDetailModel": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "nullable": true,
            "$ref": "#/components/schemas/ExceptionLocationModel"
          }
        }
      },
      "ExceptionLocationModel": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ExceptionLocationTypeEnum"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExceptionLocationTypeEnum": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "PathParameter",
          "RequestBody",
          "RequestHeader",
          "UriParameter"
        ],
        "enum": [
          "PathParameter",
          "RequestBody",
          "RequestHeader",
          "UriParameter"
        ]
      },
      "PatchOperation": {
        "type": "object",
        "required": [
          "op"
        ],
        "properties": {
          "op": {
            "$ref": "#/components/schemas/PatchOperationType"
          },
          "path": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PatchOperationType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Add",
          "Copy",
          "Move",
          "Remove",
          "Replace"
        ],
        "enum": [
          "Add",
          "Copy",
          "Move",
          "Remove",
          "Replace"
        ]
      },
      "BusinessUnitModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "parentGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "BusinessUnitModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "costCenter": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/BusinessUnitCostCenterModel",
            "x-relation": "CostCenterModel"
          },
          "vatNumber": {
            "type": "string",
            "nullable": true
          },
          "kvkNumber": {
            "type": "string",
            "maxLength": 25,
            "minLength": 0,
            "nullable": true
          },
          "fiNumber": {
            "type": "string",
            "nullable": true
          },
          "companyGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "CompanyModel"
          },
          "companyName": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "companyBusinessUnitGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "BusinessUnitModel"
          },
          "companyCountryGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "CountryModel"
          },
          "companyCurrencyGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "CurrencyOutputModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BusinessUnitCostCenterModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "CommunicationTypeModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "type": {
            "$ref": "#/components/schemas/CommunicationMethodType"
          }
        }
      },
      "CommunicationMethodType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Phone",
          "Fax",
          "MobilePhone",
          "IPPhone",
          "InstantMessenger",
          "EmailAddress"
        ],
        "enum": [
          "Phone",
          "Fax",
          "MobilePhone",
          "IPPhone",
          "InstantMessenger",
          "EmailAddress"
        ]
      },
      "KeyValuePairOfStringAndSortDirection": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "$ref": "#/components/schemas/SortDirection"
          }
        }
      },
      "SortDirection": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Asc",
          "Desc",
          "AscNullsFirst",
          "AscNullsLast",
          "DescNullsFirst",
          "DescNullsLast"
        ],
        "enum": [
          "Asc",
          "Desc",
          "AscNullsFirst",
          "AscNullsLast",
          "DescNullsFirst",
          "DescNullsLast"
        ]
      },
      "ContactCommunicationModel": {
        "type": "object",
        "required": [
          "value",
          "contact",
          "communicationType"
        ],
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "value": {
            "type": "string",
            "minLength": 1
          },
          "isForbiddenToUse": {
            "type": "boolean",
            "default": true
          },
          "contact": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "ContactModel"
          },
          "communicationType": {
            "$ref": "#/components/schemas/CommunicationTypeSubModel",
            "x-relation": "CommunicationTypeModel"
          }
        }
      },
      "ModelBaseWithRequiredGuid": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "CommunicationTypeSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "type": {
            "$ref": "#/components/schemas/CommunicationMethodType"
          }
        }
      },
      "ContactRoleModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "ContactModel": {
        "type": "object",
        "required": [
          "firstName",
          "lastName",
          "customer"
        ],
        "properties": {
          "firstName": {
            "type": "string",
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "minLength": 1
          },
          "salutation": {
            "nullable": true,
            "$ref": "#/components/schemas/SalutationType"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDeleted": {
            "type": "boolean",
            "readOnly": true
          },
          "customer": {
            "$ref": "#/components/schemas/ContactCustomer",
            "x-relation": "CustomerModel"
          },
          "addressGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "AddressModel"
          },
          "phoneNumbers": {
            "type": "array",
            "readOnly": true,
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "emails": {
            "type": "array",
            "readOnly": true,
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "satisfactionLevel": {
            "nullable": true,
            "$ref": "#/components/schemas/SatisfactionLevelType"
          },
          "timeZone": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "TimezoneModel"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "role": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ContactRoleModel"
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "LanguageModel"
          },
          "isEmailAllowed": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "SalutationType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Mr",
          "Mrs",
          "Ms"
        ],
        "enum": [
          "Mr.",
          "Mrs.",
          "Ms."
        ]
      },
      "ContactCustomer": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "CustomerModel"
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "number": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          }
        }
      },
      "SatisfactionLevelType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unsatisfied",
          "Neutral",
          "Satisfied",
          "Unknown"
        ],
        "enum": [
          "Unsatisfied",
          "Neutral",
          "Satisfied",
          "Unknown"
        ]
      },
      "KeyValuePairOfStringAndObject": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ContactChangedSinceSearchExtensionOptions": {
        "type": "string",
        "description": "",
        "x-enumFlags": true,
        "x-enumNames": [
          "NewOnly",
          "Communications"
        ],
        "enum": [
          "NewOnly",
          "Communications"
        ]
      },
      "CostAccountModel": {
        "type": "object",
        "required": [
          "name",
          "number"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "number": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isTravelTypeDefault": {
            "type": "boolean"
          }
        }
      },
      "CostCenterModel": {
        "type": "object",
        "required": [
          "name",
          "identifier"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "identifier": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "CountryModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "code2": {
            "type": "string",
            "nullable": true
          },
          "code3": {
            "type": "string",
            "nullable": true
          },
          "hasRegions": {
            "$ref": "#/components/schemas/CountryRegionsStatus"
          },
          "companyRegisterUrl": {
            "type": "string",
            "nullable": true
          },
          "isInEU": {
            "type": "boolean"
          },
          "defaultCulture": {
            "type": "string",
            "nullable": true
          },
          "isRegistrationCountry": {
            "type": "boolean"
          },
          "currency": {
            "nullable": true,
            "$ref": "#/components/schemas/CurrencyBaseModel",
            "x-relation": "CurrencyOutputModel"
          },
          "defaultLanguage": {
            "nullable": true,
            "$ref": "#/components/schemas/CountryLanguage",
            "x-relation": "LanguageModel"
          },
          "timezone": {
            "nullable": true,
            "$ref": "#/components/schemas/CountryTimezone",
            "x-relation": "TimezoneModel"
          }
        }
      },
      "CurrencyBaseModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        },
        "x-relation": null
      },
      "CountryLanguage": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CountryTimezone": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CountryRegionModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "timezone": {
            "nullable": true,
            "$ref": "#/components/schemas/CountryRegionTimezoneModel",
            "x-relation": "TimezoneModel"
          }
        }
      },
      "CountryRegionTimezoneModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerMarketSegmentModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CustomerModel"
          },
          "marketSegment": {
            "nullable": true,
            "$ref": "#/components/schemas/MarketSegmentSubModel",
            "x-relation": "MarketSegmentModel"
          },
          "parentMarketSegment": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/MarketSegmentSubModel",
            "x-relation": "MarketSegmentModel"
          }
        }
      },
      "MarketSegmentSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "FileModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "size": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "$ref": "#/components/schemas/FileCategory"
          },
          "isInternal": {
            "type": "boolean",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "FileCategory": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Misc",
          "Application",
          "Projects",
          "Proposal",
          "ProjectFees",
          "Invoice",
          "Users",
          "ProjectTravelExpense",
          "Customer"
        ],
        "enum": [
          "Misc",
          "Application",
          "Projects",
          "Proposal",
          "ProjectFees",
          "Invoice",
          "Users",
          "ProjectTravelExpense",
          "Customer"
        ]
      },
      "ProjectFileModel": {
        "type": "object",
        "required": [
          "name",
          "projectGuid"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "size": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "$ref": "#/components/schemas/FileCategory"
          },
          "isInternal": {
            "type": "boolean",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "fileGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "FileModel"
          },
          "usages": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UsageModel"
            }
          },
          "isReadOnly": {
            "type": "boolean"
          },
          "projectGuid": {
            "type": "string",
            "readOnly": true,
            "minLength": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        }
      },
      "UsageModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/ReferenceType"
          },
          "isReadOnly": {
            "type": "boolean"
          }
        }
      },
      "ReferenceType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Invoice",
          "Proposal",
          "InvoiceTemplate",
          "Other"
        ],
        "enum": [
          "Invoice",
          "Proposal",
          "InvoiceTemplate",
          "Other"
        ]
      },
      "InvoiceFileModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "size": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "$ref": "#/components/schemas/FileCategory"
          },
          "isInternal": {
            "type": "boolean",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "fileGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "FileModel"
          },
          "invoiceGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "InvoiceOutputModel"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ProjectTravelExpenseFileModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "size": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "$ref": "#/components/schemas/FileCategory"
          },
          "isInternal": {
            "type": "boolean",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "fileGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "FileModel"
          },
          "travelExpenseGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "ProjectTravelExpenseOutputModel"
          },
          "source": {
            "readOnly": true,
            "$ref": "#/components/schemas/TravelReimbursementAttachmentSource"
          }
        }
      },
      "TravelReimbursementAttachmentSource": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Severa",
          "VismaScanner",
          "Google"
        ],
        "enum": [
          "Severa",
          "VismaScanner",
          "Google"
        ]
      },
      "FlextimeModel": {
        "type": "object",
        "properties": {
          "totalFlextimeBalance": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "monthFlextimeBalance": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "FormattingCultureModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true,
            "nullable": true
          }
        }
      },
      "HolidayModel": {
        "type": "object",
        "required": [
          "name",
          "date",
          "countryGuid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "countryGuid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "CountryModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isRecurringYearly": {
            "type": "boolean"
          },
          "recurringEndYear": {
            "type": "integer",
            "format": "int32",
            "maximum": 2075.0,
            "minimum": 1900.0,
            "nullable": true
          },
          "isPublicHoliday": {
            "type": "boolean",
            "readOnly": true
          }
        }
      },
      "IndustryModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvoiceStatusModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "isReadOnly": {
            "type": "boolean"
          },
          "hasInvoiceNumber": {
            "type": "boolean"
          },
          "isSent": {
            "type": "boolean"
          },
          "isWaitingPayment": {
            "type": "boolean"
          },
          "isPaid": {
            "type": "boolean"
          },
          "isDefaultForCreditNote": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "InvoiceTemplateModel": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "canDelete": {
            "type": "boolean",
            "readOnly": true
          }
        }
      },
      "InvoiceType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Invoice",
          "Reminder"
        ],
        "enum": [
          "Invoice",
          "Reminder"
        ]
      },
      "InvoicePdfGetOptions": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "All",
          "InvoiceOnly",
          "AttachmentAndBreakdown"
        ],
        "enum": [
          "All",
          "InvoiceOnly",
          "AttachmentAndBreakdown"
        ]
      },
      "PermissionProfileModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "isAccessible": {
            "type": "boolean",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "PriceListModel": {
        "type": "object",
        "required": [
          "name",
          "currency"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isDefault": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isCustom": {
            "type": "boolean",
            "readOnly": true
          },
          "isVolumePricing": {
            "type": "boolean"
          },
          "currency": {
            "$ref": "#/components/schemas/PriceListCurrency",
            "x-relation": "CurrencyOutputModel"
          }
        }
      },
      "PriceListCurrency": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "KeywordModel": {
        "type": "object",
        "required": [
          "keyword",
          "category"
        ],
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/KeywordCategory"
          }
        }
      },
      "KeywordCategory": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Case",
          "Contact",
          "User",
          "File"
        ],
        "enum": [
          "Project",
          "Contact",
          "User",
          "File"
        ]
      },
      "ProjectKeywordModel": {
        "type": "object",
        "required": [
          "keyword"
        ],
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "default": "Case",
            "$ref": "#/components/schemas/KeywordCategory"
          }
        }
      },
      "FileKeywordModel": {
        "type": "object",
        "required": [
          "keyword"
        ],
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "default": "File",
            "$ref": "#/components/schemas/KeywordCategory"
          }
        }
      },
      "UserKeywordModel": {
        "type": "object",
        "required": [
          "keyword"
        ],
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "default": "User",
            "$ref": "#/components/schemas/KeywordCategory"
          },
          "userGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "UserOutputModel"
          }
        }
      },
      "KpiFormulaModelBase": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "unit": {
            "type": "string",
            "nullable": true
          },
          "dataType": {
            "nullable": true,
            "$ref": "#/components/schemas/SearchFieldDataType"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "category": {
            "readOnly": true,
            "$ref": "#/components/schemas/KpiFormulaCategory"
          }
        }
      },
      "SearchFieldDataType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "String",
          "Boolean",
          "Integer",
          "Percentage",
          "Numeric",
          "Money",
          "Date",
          "DateTime",
          "Time",
          "Object",
          "ObjectCollection",
          "IpAddress"
        ],
        "enum": [
          "String",
          "Boolean",
          "Integer",
          "Percentage",
          "Numeric",
          "Money",
          "Date",
          "DateTime",
          "Time",
          "Object",
          "ObjectCollection",
          "IpAddress"
        ]
      },
      "KpiFormulaCategory": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "Functions",
          "Project",
          "User",
          "Invoice"
        ],
        "enum": [
          "Unknown",
          "Functions",
          "Project",
          "User",
          "Invoice"
        ]
      },
      "LeadSourceModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "MarketSegmentModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "parentMarketSegment": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "MarketSegmentModel"
          }
        }
      },
      "OrganizationSettingsModel": {
        "type": "object",
        "required": [
          "workWeek"
        ],
        "properties": {
          "quickSearchSetting": {
            "$ref": "#/components/schemas/QuickSearchOptions"
          },
          "projectNameDisplaySetting": {
            "$ref": "#/components/schemas/ProjectNameDisplayOptions"
          },
          "displayProjectNumber": {
            "type": "boolean"
          },
          "projectNameDisplayFormatSetting": {
            "$ref": "#/components/schemas/ProjectNameDisplayFormatOptions"
          },
          "nextProjectNumber": {
            "type": "integer",
            "format": "int64"
          },
          "lastProjectNumber": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          },
          "nextCustomerNumber": {
            "type": "integer",
            "format": "int64"
          },
          "lastCustomerNumber": {
            "type": "integer",
            "readOnly": true,
            "format": "int64"
          },
          "nextTravelReimbursementNumber": {
            "type": "integer",
            "format": "int32"
          },
          "lastTravelReimbursementNumber": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          },
          "travelReimbursementInstructions": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "isTravelExpenseImmediatelyInvoiceable": {
            "type": "boolean",
            "nullable": true
          },
          "travelEntryClosingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "travelExpenseReimbursementStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "nextPurchaseOrderNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastPurchaseOrderNumber": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          },
          "purchaseOrderNumberPrefix": {
            "type": "string",
            "maxLength": 20,
            "minLength": 0,
            "nullable": true
          },
          "currencyRoundingType": {
            "$ref": "#/components/schemas/TotalRoundingType"
          },
          "overdueInterest": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "paymentTerm": {
            "type": "integer",
            "readOnly": true,
            "format": "int32",
            "nullable": true
          },
          "nextInvoiceNumber": {
            "type": "integer",
            "format": "int32"
          },
          "lastInvoiceNumber": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          },
          "workWeek": {
            "type": "array",
            "items": {
              "nullable": false,
              "$ref": "#/components/schemas/Workweek"
            }
          },
          "workHourApprovalMode": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkHourApprovalMode"
          },
          "workHourEntryFormat": {
            "$ref": "#/components/schemas/EntryFormat"
          },
          "worktimeEntryClosingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "paymentReferenceNumberDisplaySetting": {
            "$ref": "#/components/schemas/ReferenceNumberDisplay"
          },
          "uniqueIdentifierForProductsAndWorktypes": {
            "type": "boolean"
          },
          "isAddingNewKeywordsFromProjectAllowed": {
            "type": "boolean"
          },
          "isIdenticalPhaseCodesAllowed": {
            "type": "boolean",
            "default": false
          },
          "isWorkHourDescriptionMandatory": {
            "type": "boolean",
            "default": false
          },
          "setCreditNoteInvoiceNumber": {
            "type": "boolean"
          },
          "isCustomerSearchAllowed": {
            "type": "boolean"
          },
          "flextimeCalculationStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "maxFlextimeBalanceLimit": {
            "type": "number",
            "format": "double",
            "maximum": 1000.0,
            "minimum": 0.0,
            "nullable": true
          },
          "minFlextimeBalanceLimit": {
            "type": "number",
            "format": "double",
            "maximum": 0.0,
            "minimum": -1000.0,
            "nullable": true
          },
          "lastFlextimeCalculationEndTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastFlextimeCalculationUser": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameModel",
            "x-relation": "UserOutputModel"
          },
          "defaultFooterColumn1": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextModel"
          },
          "defaultFooterColumn2": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextModel"
          },
          "defaultFooterColumn3": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextModel"
          },
          "isEnteringHourPlannedInvoiceQuantityAllowed": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "QuickSearchOptions": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "ShowOpenProjectsSalesCasesAndCustomers",
          "ShowOpenAndClosedProjectsSalesCasesAndCustomers"
        ],
        "enum": [
          "ShowOpenProjectsSalesCasesAndCustomers",
          "ShowOpenAndClosedProjectsSalesCasesAndCustomers"
        ]
      },
      "ProjectNameDisplayOptions": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "ShowProjectLongName",
          "ShowProjectShortName"
        ],
        "enum": [
          "ShowProjectLongName",
          "ShowProjectShortName"
        ]
      },
      "ProjectNameDisplayFormatOptions": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "ProjectNamePhaseName",
          "CustomerNameProjectNamePhaseName"
        ],
        "enum": [
          "ProjectNamePhaseName",
          "CustomerNameProjectNamePhaseName"
        ]
      },
      "TotalRoundingType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "AwayFromZero",
          "NearestInteger"
        ],
        "enum": [
          "AwayFromZero",
          "NearestInteger"
        ]
      },
      "Workweek": {
        "type": "string",
        "description": "",
        "x-enumFlags": true,
        "x-enumNames": [
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "Saturday",
          "Sunday"
        ],
        "enum": [
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "Saturday",
          "Sunday"
        ]
      },
      "WorkHourApprovalMode": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "RequiredForInvoicing",
          "InvoicableAlways"
        ],
        "enum": [
          "None",
          "RequiredForInvoicing",
          "InvoicableAlways"
        ]
      },
      "EntryFormat": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "StartTimeEndTime",
          "Quantity",
          "StartTimeEndTimeNoOverlapping"
        ],
        "enum": [
          "StartTimeEndTime",
          "Quantity",
          "StartTimeEndTimeNoOverlapping"
        ]
      },
      "ReferenceNumberDisplay": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "ReferenceNumber",
          "Kid"
        ],
        "enum": [
          "ReferenceNumber",
          "Kid"
        ]
      },
      "UserWithFirstNameLastNameModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FreeTextModel": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "allowTags": {
            "type": "boolean",
            "readOnly": true,
            "nullable": true
          },
          "tagContext": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        },
        "x-relation": null
      },
      "ProductCategoryModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProjectWorkTypeModel": {
        "type": "object",
        "required": [
          "projectGuid",
          "worktype"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "projectGuid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "ProjectOutputModel"
          },
          "worktype": {
            "$ref": "#/components/schemas/WorkTypeSubModel",
            "x-relation": "WorkTypeOutputModel"
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "WorkTypeSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "readOnly": true,
            "default": true
          },
          "isProductive": {
            "type": "boolean",
            "readOnly": true
          }
        }
      },
      "SalesAccountModel": {
        "type": "object",
        "required": [
          "name",
          "number"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "number": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isProductDefault": {
            "type": "boolean"
          },
          "isWorkTypeDefault": {
            "type": "boolean"
          },
          "isTravelTypeDefault": {
            "type": "boolean"
          }
        }
      },
      "ActivityParticipantModel": {
        "type": "object",
        "required": [
          "participantGuid",
          "activityGuid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/ParticipantType"
          },
          "participantGuid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "UserOutputModel"
          },
          "activityGuid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "ActivityModel"
          },
          "email": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/MemberStatus"
          },
          "isActive": {
            "type": "boolean",
            "readOnly": true
          }
        }
      },
      "ParticipantType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "User",
          "Contact",
          "Resource",
          "Other"
        ],
        "enum": [
          "User",
          "Contact",
          "Resource",
          "Other"
        ]
      },
      "MemberStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "Invited",
          "Accepted",
          "Tentative",
          "Declined"
        ],
        "enum": [
          "Unknown",
          "Invited",
          "Accepted",
          "Tentative",
          "Declined"
        ]
      },
      "GuidConversionModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true,
            "x-relation": null
          },
          "converted": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerCountrySettingsOutputModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "CustomerModel"
          },
          "country": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerCountry",
            "x-relation": "CountryModel"
          },
          "valueAddedTax": {
            "nullable": true,
            "$ref": "#/components/schemas/ValueAddedTaxSubModel",
            "x-relation": "VatRateOutputModel"
          },
          "isTaxFree": {
            "type": "boolean"
          },
          "taxFreeDescription": {
            "type": "string",
            "nullable": true
          },
          "zeroVatCategoryCodeEn16931": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ModelBase": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerCountry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ValueAddedTaxSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "percentage": {
            "type": "number",
            "readOnly": true,
            "format": "double"
          }
        }
      },
      "CustomerCountrySettingsInputModel": {
        "type": "object",
        "required": [
          "customer",
          "country"
        ],
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "CustomerModel"
          },
          "country": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "CountryModel"
          },
          "valueAddedTax": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "VatRateOutputModel"
          },
          "isTaxFree": {
            "type": "boolean"
          },
          "taxFreeDescription": {
            "type": "string",
            "nullable": true
          },
          "zeroVatCategoryCodeEn16931": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SimpleInputRequiredModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "SimpleInputModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerCustomPropertySelectionItemOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "customerCustomProperty": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "isActive": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "CustomPropertyShortModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "type": {
            "readOnly": true,
            "$ref": "#/components/schemas/CustomPropertyType"
          },
          "parameters": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "CustomPropertyType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Numeric",
          "Money",
          "String",
          "Date",
          "Selection"
        ],
        "enum": [
          "Numeric",
          "Money",
          "String",
          "Date",
          "Selection"
        ]
      },
      "CustomerCustomPropertySelectionItemInputModel": {
        "type": "object",
        "required": [
          "customerCustomProperty"
        ],
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "customerCustomProperty": {
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CustomPropertyModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "FlatRateOutputModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/FlatrateProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "PhaseOutputModel"
          },
          "billingSchedule": {
            "nullable": true,
            "$ref": "#/components/schemas/BillingScheduleType"
          },
          "plannedBillingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "price": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "includesHours": {
            "type": "number",
            "format": "double",
            "default": 0,
            "nullable": true
          },
          "billAdditionalHours": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "pricePerAdditionalHour": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "invoiceGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseOutputModel"
          }
        }
      },
      "FlatrateProjectSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "number": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          }
        }
      },
      "BillingScheduleType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Immediately",
          "WhenPhaseCompleted",
          "OnDate"
        ],
        "enum": [
          "Immediately",
          "WhenPhaseCompleted",
          "OnDate"
        ]
      },
      "MoneyOutputModel": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "multiCurrencyInfo": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MultiCurrencyInfoModel"
            }
          }
        },
        "x-relation": null
      },
      "MultiCurrencyInfoModel": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "purpose": {
            "type": "array",
            "nullable": false,
            "items": {
              "nullable": false,
              "$ref": "#/components/schemas/CurrencyPurpose"
            }
          }
        }
      },
      "CurrencyPurpose": {
        "type": "string",
        "description": "",
        "x-enumFlags": true,
        "x-enumNames": [
          "ProjectPrice",
          "ProjectCost",
          "UserCost",
          "ExpenseCost"
        ],
        "enum": [
          "ProjectPrice",
          "ProjectCost",
          "UserCost",
          "ExpenseCost"
        ]
      },
      "FlextimeAdjustmentOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNamePhotoFileModelAndRequiredGuid",
            "x-relation": "UserOutputModel"
          },
          "adjustmentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UserWithFirstNameLastNamePhotoFileModelAndRequiredGuid": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FlextimeAdjustmentInputModel": {
        "type": "object",
        "required": [
          "user",
          "adjustmentDate",
          "amount"
        ],
        "properties": {
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "adjustmentDate": {
            "type": "string",
            "format": "date"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ContactKeywordModel": {
        "type": "object",
        "required": [
          "keyword"
        ],
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "default": "Contact",
            "$ref": "#/components/schemas/KeywordCategory"
          }
        }
      },
      "ProjectCustomPropertySelectionItemOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "projectCustomProperty": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "isActive": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ProjectCustomPropertySelectionItemInputModel": {
        "type": "object",
        "required": [
          "projectCustomProperty"
        ],
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "projectCustomProperty": {
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CustomPropertyModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "CustomerCustomValueOutputModel": {
        "type": "object",
        "properties": {
          "customProperty": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "CustomerModel"
          }
        }
      },
      "ProjectInvoiceSettingsOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProjectOutputModel"
          },
          "freeText1": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "htmlText1": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "freeText2": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "htmlText2": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "showQuantity": {
            "type": "boolean",
            "nullable": true
          },
          "showUnit": {
            "type": "boolean",
            "nullable": true
          },
          "showUnitPrice": {
            "type": "boolean",
            "nullable": true
          },
          "showValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "showPriceExcludingValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentUnit": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentUnitPrice": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentPriceExcludingValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "workHourDescriptionFormat": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpenseDescriptionFormat": {
            "type": "string",
            "nullable": true
          },
          "projectFeeDescriptionFormat": {
            "type": "string",
            "nullable": true
          },
          "workHourGrouping": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "projectFeeGrouping": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "projectTravelExpenseGrouping": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "workHourPrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "workHourSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectFeePrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectFeeSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpensePrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpenseSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "showCategories": {
            "type": "boolean",
            "nullable": true
          },
          "showReferenceNumber": {
            "type": "boolean",
            "nullable": true
          },
          "showLogoAndTitle": {
            "type": "boolean",
            "nullable": true
          },
          "showFooter": {
            "type": "boolean",
            "nullable": true
          },
          "style": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceSkin"
          }
        }
      },
      "TemplateFreeTextModel": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "nullable": true
          },
          "allowTags": {
            "type": "boolean",
            "nullable": true
          },
          "tagContext": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        },
        "x-relation": null
      },
      "InvoiceGrouping": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "OneByOne",
          "Group",
          "GroupWithAttachment"
        ],
        "enum": [
          "OneByOne",
          "Group",
          "Group+Attachment"
        ]
      },
      "InvoiceSkin": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "BlackAndWhite",
          "Blue",
          "Cyan",
          "Green",
          "Lilac",
          "Orange",
          "Plain",
          "Red",
          "Yellow"
        ],
        "enum": [
          "BlackAndWhite",
          "Blue",
          "Cyan",
          "Green",
          "Lilac",
          "Orange",
          "Plain",
          "Red",
          "Yellow"
        ]
      },
      "ProjectInvoiceSettingsInputModel": {
        "type": "object",
        "required": [
          "project"
        ],
        "properties": {
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "freeText1": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "htmlText1": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "freeText2": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "htmlText2": {
            "nullable": true,
            "$ref": "#/components/schemas/TemplateFreeTextModel"
          },
          "showQuantity": {
            "type": "boolean",
            "nullable": true
          },
          "showUnit": {
            "type": "boolean",
            "nullable": true
          },
          "showUnitPrice": {
            "type": "boolean",
            "nullable": true
          },
          "showValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "showPriceExcludingValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentUnit": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentUnitPrice": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "showAttachmentPriceExcludingValueAddedTax": {
            "type": "boolean",
            "nullable": true
          },
          "workHourDescriptionFormat": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpenseDescriptionFormat": {
            "type": "string",
            "nullable": true
          },
          "projectFeeDescriptionFormat": {
            "type": "string",
            "nullable": true
          },
          "workHourGrouping": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "projectFeeGrouping": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "projectTravelExpenseGrouping": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "workHourPrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "workHourSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectFeePrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectFeeSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpensePrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpenseSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "showCategories": {
            "type": "boolean",
            "nullable": true
          },
          "showReferenceNumber": {
            "type": "boolean",
            "nullable": true
          },
          "showLogoAndTitle": {
            "type": "boolean",
            "nullable": true
          },
          "showFooter": {
            "type": "boolean",
            "nullable": true
          },
          "style": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceSkin"
          }
        }
      },
      "ProjectProductOutputModel": {
        "type": "object",
        "required": [
          "product"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "product": {
            "$ref": "#/components/schemas/ProjectProductSubModel",
            "x-relation": "ProductOutputModel"
          }
        }
      },
      "ProjectSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ProjectProductSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "productCategory": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "productCode": {
            "type": "string",
            "nullable": true
          },
          "productType": {
            "readOnly": true,
            "$ref": "#/components/schemas/TypeOfProduct"
          },
          "isActive": {
            "type": "boolean",
            "readOnly": true
          }
        }
      },
      "TypeOfProduct": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "OwnWork",
          "Products",
          "Subcontracting",
          "Travels"
        ],
        "enum": [
          "OwnWork",
          "Products",
          "Subcontracting",
          "Travels"
        ]
      },
      "ProjectProductInputModel": {
        "type": "object",
        "required": [
          "project",
          "product"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "product": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProductOutputModel"
          }
        }
      },
      "ProjectWorkHourPriceOutputModel": {
        "type": "object",
        "properties": {
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "PhaseOutputModel"
          },
          "isAvailable": {
            "type": "boolean"
          },
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "UserOutputModel"
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "WorkTypeOutputModel"
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectSubModel",
            "x-relation": "ProjectOutputModel"
          }
        }
      },
      "ProjectWorkHourPriceInputModel": {
        "type": "object",
        "required": [
          "unitPrice",
          "project"
        ],
        "properties": {
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "PhaseOutputModel"
          },
          "isBillable": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "UserOutputModel"
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "WorkTypeOutputModel"
          },
          "unitPrice": {
            "$ref": "#/components/schemas/MoneyInputModel"
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProjectOutputModel"
          }
        }
      },
      "MoneyInputModel": {
        "type": "object",
        "required": [
          "amount",
          "currencyCode"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currencyCode": {
            "type": "string",
            "minLength": 1
          }
        },
        "x-relation": null
      },
      "ProposalSubtotalOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "proposal": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProposalOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "PhaseOutputModel"
          },
          "projectFee": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProjectFeeOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isShownOnProposal": {
            "type": "boolean"
          }
        }
      },
      "ProposalSubtotalInputModel": {
        "type": "object",
        "required": [
          "name",
          "proposal"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 0
          },
          "proposal": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProposalOutputModel"
          },
          "phase": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "PhaseOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isShownOnProposal": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "ProposalFeeRowOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProductOutputModel"
          },
          "projectFee": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProjectFeeOutputModel"
          },
          "proposal": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProposalOutputModel"
          },
          "subtotal": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProposalSubtotalOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isShownOnProposal": {
            "type": "boolean"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ProposalFeeRowInputModel": {
        "type": "object",
        "required": [
          "name",
          "proposal",
          "quantity"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 0
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProductOutputModel"
          },
          "projectFee": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProjectFeeOutputModel"
          },
          "proposal": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProposalOutputModel"
          },
          "subtotal": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProposalSubtotalOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModel"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isShownOnProposal": {
            "type": "boolean",
            "default": true
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ProposalStatusOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "isWon": {
            "type": "boolean"
          },
          "isLost": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "UsageModel2": {
        "type": "object",
        "properties": {
          "context": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "readOnly": true,
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ProposalStatusInputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 0
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "isWon": {
            "type": "boolean"
          },
          "isLost": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "ProposalOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "proposalDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/ProposalLanguageSubModel",
            "x-relation": "LanguageModel"
          },
          "culture": {
            "nullable": true,
            "$ref": "#/components/schemas/FormattingCultureSubModel",
            "x-relation": "FormattingCultureModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ProposalCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "customerContactPerson": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerContactPersonSubModel",
            "x-relation": "ContactModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ProposalProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "proposalStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProposalStatusOutputModel"
          },
          "billingAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/ProposalBillingAddressSubModel",
            "x-relation": "AddressModel"
          },
          "totalIncludingVat": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "totalExcludingVat": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "freeText1": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextModel2"
          },
          "freeText2": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextModel2"
          },
          "pricelist": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PriceListOutputModel"
          }
        }
      },
      "ProposalLanguageSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FormattingCultureSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProposalCustomerSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "CustomerContactPersonSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProposalProjectSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ProposalBillingAddressSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "addressline": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FreeTextModel2": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "plainText": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "allowTags": {
            "type": "boolean",
            "readOnly": true
          },
          "tagContext": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        },
        "x-relation": null
      },
      "ProposalInputModel": {
        "type": "object",
        "required": [
          "name",
          "project"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "minLength": 0
          },
          "proposalDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "LanguageModel"
          },
          "culture": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "FormattingCultureModel"
          },
          "customerContactPerson": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ContactModel"
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "proposalStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProposalStatusOutputModel"
          },
          "billingAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "AddressModel"
          },
          "freeText1": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextInputModel"
          },
          "freeText2": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextInputModel"
          }
        }
      },
      "FreeTextInputModel": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "x-relation": null
      },
      "ProposalSettingsOutputModel": {
        "type": "object",
        "properties": {
          "isTaxFree": {
            "type": "boolean",
            "default": false
          },
          "showQuantity": {
            "type": "boolean",
            "default": true
          },
          "showUnit": {
            "type": "boolean",
            "default": true
          },
          "showUnitPrice": {
            "type": "boolean",
            "default": true
          },
          "showTotalPrice": {
            "type": "boolean",
            "default": true
          },
          "showBillingDetails": {
            "type": "boolean",
            "default": false,
            "deprecated": true,
            "x-deprecatedMessage": "Obsolete"
          },
          "showProjectMembers": {
            "type": "boolean",
            "default": false
          },
          "showGanttChart": {
            "type": "boolean",
            "default": false,
            "deprecated": true,
            "x-deprecatedMessage": "Obsolete"
          },
          "showTreeview": {
            "type": "boolean",
            "default": false,
            "deprecated": true,
            "x-deprecatedMessage": "Obsolete"
          },
          "showProjectPlan": {
            "type": "boolean",
            "default": false
          },
          "showOurReference": {
            "type": "boolean",
            "default": false
          },
          "showYourReference": {
            "type": "boolean",
            "default": false
          },
          "showOrderNumber": {
            "type": "boolean",
            "default": false
          },
          "showBillingContact": {
            "type": "boolean",
            "default": false
          },
          "showPaymentTerms": {
            "type": "boolean",
            "default": false
          },
          "style": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceSkin"
          },
          "printTotalInPdf": {
            "default": "PrintToProposalBoth",
            "$ref": "#/components/schemas/PrintToPdf"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "PrintToPdf": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "DoNotPrintToProposal",
          "PrintToProposalBottom",
          "PrintToProposalBoth"
        ],
        "enum": [
          "DoNotPrintToProposal",
          "PrintToProposalBottom",
          "PrintToProposalBoth"
        ]
      },
      "ProposalWorkhourRowOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "WorkTypeOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "PhaseOutputModel"
          },
          "proposal": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProposalOutputModel"
          },
          "subtotal": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProposalSubtotalOutputModel"
          },
          "projectFee": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProjectFeeOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isShownOnProposal": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "ProposalWorkhourRowInputModel": {
        "type": "object",
        "required": [
          "name",
          "quantity",
          "workType",
          "proposal"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 0
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "workType": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "WorkTypeOutputModel"
          },
          "proposal": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProposalOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "subtotal": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProposalSubtotalOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isShownOnProposal": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "RoleAllocationOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "role": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "RoleOutputModel"
          },
          "allocationHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CustomerModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/PhaseSubModel",
            "x-relation": "PhaseOutputModel"
          }
        }
      },
      "PhaseSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "RoleAllocationInputModel": {
        "type": "object",
        "required": [
          "role",
          "allocationHours",
          "project"
        ],
        "properties": {
          "role": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "RoleOutputModel"
          },
          "allocationHours": {
            "type": "number",
            "format": "double"
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "RoleOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "RoleInputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "ProjectSalesNoteOutputModel": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProjectOutputModel"
          }
        }
      },
      "CustomerSalesNoteOutputModel": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "CustomerModel"
          }
        }
      },
      "SalesNoteOutputModel": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProjectOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "CustomerModel"
          }
        }
      },
      "ProjectSalesNoteInputModel": {
        "type": "object",
        "required": [
          "user",
          "project"
        ],
        "properties": {
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          }
        }
      },
      "CustomerSalesNoteInputModel": {
        "type": "object",
        "required": [
          "user",
          "customer"
        ],
        "properties": {
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "customer": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "CustomerModel"
          }
        }
      },
      "UserCustomPropertyOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "permission": {
            "$ref": "#/components/schemas/PermissionLevel"
          },
          "type": {
            "$ref": "#/components/schemas/CustomPropertyType"
          },
          "parameters": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "usageCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PermissionLevel": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "View",
          "Edit"
        ],
        "enum": [
          "View",
          "Edit"
        ]
      },
      "UserCustomPropertyInputModel": {
        "type": "object",
        "required": [
          "name",
          "type"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "type": {
            "$ref": "#/components/schemas/CustomPropertyType"
          },
          "permission": {
            "default": "View",
            "$ref": "#/components/schemas/PermissionLevel"
          },
          "parameters": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "ProjectCustomValueOutputModel": {
        "type": "object",
        "properties": {
          "customProperty": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "ProjectOutputModel"
          }
        }
      },
      "UserCustomValueOutputModel": {
        "type": "object",
        "properties": {
          "customProperty": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "UserCustomValueInputModel": {
        "type": "object",
        "required": [
          "customProperty",
          "user"
        ],
        "properties": {
          "customProperty": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "CustomPropertyModel"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "UserCustomPropertySelectionItemOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "userCustomProperty": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "isActive": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "UserCustomPropertySelectionItemInputModel": {
        "type": "object",
        "required": [
          "userCustomProperty"
        ],
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "userCustomProperty": {
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CustomPropertyModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "WorkContractOutputModel": {
        "type": "object",
        "required": [
          "title",
          "startDate"
        ],
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "dailyHours": {
            "type": "number",
            "format": "double"
          },
          "isOvertimeAllowed": {
            "type": "boolean"
          },
          "isFlextimeActive": {
            "type": "boolean",
            "default": true
          },
          "flextimeLimitPerDay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "workWeek": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": false,
              "$ref": "#/components/schemas/Workweek"
            }
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "hourCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithPhotoFileModelAndRequiredGuid",
            "x-relation": "UserOutputModel"
          },
          "role": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "RoleOutputModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "UserWithPhotoFileModelAndRequiredGuid": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "WorkContractInputModel": {
        "type": "object",
        "required": [
          "title",
          "startDate",
          "hourCost",
          "user"
        ],
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "dailyHours": {
            "type": "number",
            "format": "double"
          },
          "isOvertimeAllowed": {
            "type": "boolean"
          },
          "isFlextimeActive": {
            "type": "boolean",
            "default": true
          },
          "flextimeLimitPerDay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "hourCost": {
            "$ref": "#/components/schemas/MoneyInputModelWithNotNegativeAmount"
          },
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "workWeek": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": false,
              "$ref": "#/components/schemas/Workweek"
            }
          },
          "role": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "RoleOutputModel"
          }
        }
      },
      "MoneyInputModelWithNotNegativeAmount": {
        "type": "object",
        "required": [
          "currencyCode"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "minLength": 1
          }
        },
        "x-relation": null
      },
      "WorkHourPriceOutputModel": {
        "type": "object",
        "properties": {
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "UserOutputModel"
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "WorkTypeOutputModel"
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "pricelistVersion": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "PricelistVersionOutputModel"
          }
        }
      },
      "CustomPropertyModel": {
        "type": "object",
        "required": [
          "name",
          "type"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "type": {
            "$ref": "#/components/schemas/CustomPropertyType"
          },
          "parameters": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "usageCount": {
            "type": "integer",
            "readOnly": true,
            "format": "int32"
          }
        }
      },
      "CustomerCustomValueModel": {
        "type": "object",
        "required": [
          "customProperty"
        ],
        "properties": {
          "customProperty": {
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "customerGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CustomerModel"
          }
        }
      },
      "ProjectCustomValueModel": {
        "type": "object",
        "required": [
          "customProperty"
        ],
        "properties": {
          "customProperty": {
            "$ref": "#/components/schemas/CustomPropertyShortModel",
            "x-relation": "CustomPropertyModel"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "projectGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ProjectOutputModel"
          }
        }
      },
      "ActivityTypeModel": {
        "type": "object",
        "required": [
          "category",
          "name"
        ],
        "properties": {
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "isPaidLeave": {
            "type": "boolean",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/ActivityCategory"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "ActivityCategory": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Personal",
          "Absences",
          "CalendarEntry",
          "SalesEvent",
          "Task"
        ],
        "enum": [
          "Personal",
          "Absences",
          "CalendarEntry",
          "SalesEvent",
          "Task"
        ]
      },
      "EInvoicingAddressOutputModel": {
        "type": "object",
        "required": [
          "customer",
          "eInvoiceAddress"
        ],
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "customer": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "CustomerModel"
          },
          "eInvoiceAddress": {
            "type": "string",
            "minLength": 1
          },
          "eInvoiceOperatorCode": {
            "type": "string",
            "nullable": true
          },
          "organizationUnitNumber": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvoiceOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "referenceNumber": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceStatusSubModel",
            "x-relation": "InvoiceStatusModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "projects": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InvoiceProjectSubModel"
            },
            "x-relation": "ProjectOutputModel"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "dueDate": {
            "type": "string",
            "format": "date"
          },
          "paymentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "entryDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "paymentTerm": {
            "type": "integer",
            "format": "int32"
          },
          "overdueInterest": {
            "type": "number",
            "format": "double"
          },
          "ourReference": {
            "type": "string",
            "nullable": true
          },
          "yourReference": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "nullable": true,
            "$ref": "#/components/schemas/CurrencySubModel",
            "x-relation": "CurrencyOutputModel"
          },
          "currencyRate": {
            "type": "number",
            "format": "double"
          },
          "totalIncludingTax": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "totalExcludingTax": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "totalTax": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "workHoursTotalExcludingTax": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "projectFeesTotalExcludingTax": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "projectTravelExpensesTotalExcludingTax": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "flatRatesTotalExcludingTax": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "workHoursQuantity": {
            "type": "number",
            "format": "double"
          },
          "receiverCustomerName": {
            "type": "string",
            "nullable": true
          },
          "receiverContactGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ContactModel"
          },
          "receiverContactName": {
            "type": "string",
            "nullable": true
          },
          "receiverContactEmail": {
            "type": "string",
            "nullable": true
          },
          "receiverAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceReceiverAddressSubModel"
          },
          "receiverVatNumber": {
            "type": "string",
            "nullable": true
          },
          "receiverKvkNumber": {
            "type": "string",
            "nullable": true
          },
          "senderName": {
            "type": "string",
            "nullable": true
          },
          "senderContactName": {
            "type": "string",
            "nullable": true
          },
          "senderContactGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ContactModel"
          },
          "senderAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceSenderAddressSubModel"
          },
          "senderVatNumber": {
            "type": "string",
            "nullable": true
          },
          "senderKvkNumber": {
            "type": "string",
            "nullable": true
          },
          "isCreditNote": {
            "type": "boolean"
          },
          "reimburseInvoice": {
            "nullable": true,
            "$ref": "#/components/schemas/RelatedInvoiceSubModel",
            "x-relation": "InvoiceOutputModel"
          },
          "creditNoteInvoice": {
            "nullable": true,
            "$ref": "#/components/schemas/RelatedInvoiceSubModel",
            "x-relation": "InvoiceOutputModel"
          },
          "invoiceNumberBusinessUnitGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "BusinessUnitModel"
          },
          "orderNumber": {
            "type": "string",
            "nullable": true
          },
          "invoiceTemplate": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "InvoiceTemplateModel"
          },
          "culture": {
            "nullable": true,
            "$ref": "#/components/schemas/FormattingCultureSubModel2",
            "x-relation": "FormattingCultureModel"
          },
          "billingCustomer": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "freeText1": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextModel2"
          },
          "freeText2": {
            "nullable": true,
            "$ref": "#/components/schemas/FreeTextModel2"
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceLanguageSubModel",
            "x-relation": "LanguageModel"
          },
          "canBeDeleted": {
            "type": "boolean"
          },
          "workHourValueAddedTax": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "InvoiceStatusSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "isSent": {
            "type": "boolean"
          },
          "isWaitingPayment": {
            "type": "boolean"
          },
          "isPaid": {
            "type": "boolean"
          }
        }
      },
      "InvoiceCustomerSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isPrivatePerson": {
            "type": "boolean"
          }
        }
      },
      "InvoiceProjectSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "CurrencySubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvoiceReceiverAddressSubModel": {
        "type": "object",
        "properties": {
          "addressline": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvoiceSenderAddressSubModel": {
        "type": "object",
        "properties": {
          "addressline": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RelatedInvoiceSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "FormattingCultureSubModel2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "InvoiceLanguageSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateInvoiceModel": {
        "type": "object",
        "required": [
          "projects"
        ],
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateInvoiceProjectModel"
            }
          },
          "groupProjects": {
            "type": "boolean"
          },
          "invoiceStatusGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceStatusModel"
          },
          "billingCustomerGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CustomerModel"
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "CreateInvoiceProjectModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "ProjectOutputModel"
          }
        }
      },
      "CustomerModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isInternal": {
            "type": "boolean",
            "readOnly": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "website": {
            "type": "string",
            "nullable": true
          },
          "vatNumber": {
            "type": "string",
            "nullable": true
          },
          "kvkNumber": {
            "type": "string",
            "maxLength": 25,
            "minLength": 0,
            "nullable": true
          },
          "fiNumber": {
            "type": "string",
            "nullable": true
          },
          "numberOfEmployees": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "annualRevenue": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerLanguage",
            "x-relation": "LanguageModel"
          },
          "currency": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerCurrency",
            "x-relation": "CurrencyOutputModel"
          },
          "owner": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "industry": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "IndustryModel"
          },
          "headquarterAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerHeadquarterAddress",
            "x-relation": "AddressModel"
          },
          "timezone": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "TimezoneModel"
          },
          "pricelist": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PriceListModel"
          },
          "paymentTerm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overdueInterest": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoicingVat": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerInvoicingVat",
            "x-relation": "VatRateOutputModel"
          },
          "eInvoiceAddress": {
            "type": "string",
            "nullable": true
          },
          "eInvoiceOperator": {
            "type": "string",
            "nullable": true
          },
          "organizationUnitNumber": {
            "type": "string",
            "nullable": true
          },
          "invoiceTemplate": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "InvoiceTemplateModel"
          },
          "isPrivatePerson": {
            "type": "boolean"
          },
          "eInvoicingInfo": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerEInvoicingModel",
            "x-relation": "EInvoicingAddressOutputModel"
          }
        }
      },
      "CustomerLanguage": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "CustomerCurrency": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerHeadquarterAddress": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "addressline": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "city": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "country": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "CustomerInvoicingVat": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "percentage": {
            "type": "number",
            "format": "double"
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerEInvoicingModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "eInvoiceAddress": {
            "type": "string",
            "nullable": true
          },
          "eInvoiceOperatorCode": {
            "type": "string",
            "nullable": true
          },
          "organizationUnitNumber": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerChangedSinceSearchExtensionOptions": {
        "type": "string",
        "description": "",
        "x-enumFlags": true,
        "x-enumNames": [
          "NewOnly",
          "MarketSegments",
          "Addresses",
          "Contacts",
          "EInvoicingInfo"
        ],
        "enum": [
          "NewOnly",
          "MarketSegments",
          "Addresses",
          "Contacts",
          "EInvoicingInfo"
        ]
      },
      "CustomerFileModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "size": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "$ref": "#/components/schemas/FileCategory"
          },
          "isInternal": {
            "type": "boolean",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "fileGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "FileModel"
          },
          "customer": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CustomerModel"
          }
        }
      },
      "InvoiceSettingsOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "entryDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "paymentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "isReverseCharged": {
            "type": "boolean"
          },
          "reverseChargeDescription": {
            "type": "string",
            "nullable": true
          },
          "style": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceSkin"
          },
          "showLogoAndTitle": {
            "type": "boolean"
          },
          "showFooter": {
            "type": "boolean"
          },
          "showQuantity": {
            "type": "boolean"
          },
          "showUnit": {
            "type": "boolean"
          },
          "showUnitPrice": {
            "type": "boolean"
          },
          "showValueAddedTax": {
            "type": "boolean"
          },
          "showPriceExcludingValueAddedTax": {
            "type": "boolean",
            "readOnly": true
          },
          "showAttachmentQuantity": {
            "type": "boolean",
            "readOnly": true
          },
          "showAttachmentUnit": {
            "type": "boolean"
          },
          "showAttachmentUnitPrice": {
            "type": "boolean"
          },
          "showAttachmentValueAddedTax": {
            "type": "boolean"
          },
          "showAttachmentPriceExcludingValueAddedTax": {
            "type": "boolean"
          },
          "workHourDescriptionFormat": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "projectTravelExpenseDescriptionFormat": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "projectFeeDescriptionFormat": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "workHourGrouping": {
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "projectFeeGrouping": {
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "projectTravelExpenseGrouping": {
            "$ref": "#/components/schemas/InvoiceGrouping"
          },
          "workHourPrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "workHourSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectFeePrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectFeeSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpensePrimaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "projectTravelExpenseSecondaryGroupBy": {
            "type": "string",
            "nullable": true
          },
          "showCategories": {
            "type": "boolean",
            "default": true
          },
          "categorySortOrder": {
            "type": "string",
            "nullable": true
          },
          "showReferenceNumber": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "InvoiceRowOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "invoiceGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceOutputModel"
          },
          "rowType": {
            "$ref": "#/components/schemas/InvoiceRowType"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceRowAccountingSubModel"
          },
          "recurringSalesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceRowAccountingSubModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceRowAccountingSubModel"
          },
          "vatAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceRowAccountingSubModel"
          },
          "salesReceivableAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceRowAccountingSubModel"
          },
          "category": {
            "$ref": "#/components/schemas/InvoiceRowCategory"
          },
          "flatRateGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "FlatRateOutputModel"
          },
          "hasInvoiceComment": {
            "type": "boolean"
          },
          "code": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "InvoiceRowType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "FlatRate",
          "Hours",
          "ProjectFees",
          "TravelExpenses"
        ],
        "enum": [
          "FlatRate",
          "Hours",
          "ProjectFees",
          "TravelExpenses"
        ]
      },
      "InvoiceRowAccountingSubModel": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvoiceRowCategory": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Hours",
          "ProjectFees",
          "Travels"
        ],
        "enum": [
          "Hours",
          "ProjectFees",
          "Travels"
        ]
      },
      "LanguageModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "isInvoiceLanguage": {
            "type": "boolean"
          }
        }
      },
      "OrganizationDetailsOutputModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "vatNumber": {
            "type": "string",
            "nullable": true
          },
          "kvkNumber": {
            "type": "string",
            "maxLength": 25,
            "minLength": 0,
            "nullable": true
          },
          "fiNumber": {
            "type": "string",
            "nullable": true
          },
          "isVatRegistered": {
            "type": "boolean"
          },
          "registeredOffice": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "nullable": true,
            "$ref": "#/components/schemas/OrganizationDetailsCountrySubModel",
            "x-relation": "CountryModel"
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "nullable": true
          },
          "termsOfServiceApprover": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "eInvoiceAddress": {
            "type": "string",
            "nullable": true
          },
          "eInvoiceOperatorCode": {
            "type": "string",
            "nullable": true
          },
          "odpCompany": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "nullable": true,
            "$ref": "#/components/schemas/CurrencyBaseModel",
            "x-relation": "CurrencyOutputModel"
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/OrganizationDetailsLanguageSubModel",
            "x-relation": "LanguageModel"
          },
          "formatting": {
            "nullable": true,
            "$ref": "#/components/schemas/OrganizationDetailsFormattingSubModel",
            "x-relation": "FormattingCultureModel"
          },
          "timezone": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "TimezoneModel"
          },
          "activeCompanies": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CompanyModel"
            }
          },
          "activeAddons": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "OrganizationDetailsCountrySubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UserWithNameAndPhotoFileModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "OrganizationDetailsLanguageSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OrganizationDetailsFormattingSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CompanyModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "rootBusinessUnitGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "BusinessUnitModel"
          },
          "country": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/CompanyCountry",
            "x-relation": "CountryModel"
          },
          "currencyGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "CurrencyOutputModel"
          },
          "currencyRate": {
            "type": "number",
            "readOnly": true,
            "format": "double"
          },
          "currencyCode": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "currencySymbol": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "CompanyCountry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "code3": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "PhaseMemberOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "currentWorkContractTitle": {
            "type": "string",
            "nullable": true
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          }
        }
      },
      "DeletedPhaseMemberOutputModel": {
        "type": "object",
        "properties": {
          "deletedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "currentWorkContractTitle": {
            "type": "string",
            "nullable": true
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBase",
            "x-relation": "PhaseOutputModel"
          }
        }
      },
      "ModelBaseReadOnly": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "PhaseOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/PhaseProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "parentPhase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "PhaseOutputModel"
          },
          "isCompleted": {
            "type": "boolean",
            "default": false
          },
          "isLocked": {
            "type": "boolean",
            "default": false
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "deadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "workHoursEstimate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "originalWorkHoursEstimate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "originalStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "originalDeadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultWorkType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "WorkTypeOutputModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "nullable": true,
            "$ref": "#/components/schemas/CurrencyBaseModel"
          },
          "phaseStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/PhaseStatusOutputModel"
          }
        }
      },
      "PhaseProjectSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "number": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          },
          "isInternal": {
            "type": "boolean",
            "readOnly": true
          },
          "isClosed": {
            "type": "boolean",
            "readOnly": true
          }
        }
      },
      "PhaseStatusOutputModel": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "phaseStatusTypeGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseStatusTypeModel"
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        },
        "x-relation": null
      },
      "PhaseInputModel": {
        "type": "object",
        "required": [
          "name",
          "parentPhase"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "ProjectOutputModel"
          },
          "parentPhase": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "PhaseOutputModel"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "deadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "workHoursEstimate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "originalWorkHoursEstimate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "originalStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "originalDeadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultWorkType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "WorkTypeOutputModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "phaseStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/PhaseStatusInputModel"
          },
          "isCompleted": {
            "type": "boolean",
            "default": false
          },
          "isClosed": {
            "type": "boolean",
            "default": false
          },
          "isLocked": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "PhaseStatusInputModel": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "phaseStatusTypeGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseStatusTypeModel"
          }
        },
        "x-relation": null
      },
      "PhaseModelWithHierarchyInfo": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/PhaseProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "parentPhase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "PhaseOutputModel"
          },
          "isCompleted": {
            "type": "boolean",
            "default": false
          },
          "isLocked": {
            "type": "boolean",
            "default": false
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "deadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "workHoursEstimate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "originalWorkHoursEstimate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "originalStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "originalDeadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultWorkType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "WorkTypeOutputModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "nullable": true,
            "$ref": "#/components/schemas/CurrencyBaseModel"
          },
          "phaseStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/PhaseStatusOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "customer": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/PhaseCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "hasChildren": {
            "type": "boolean"
          },
          "level": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PhaseCustomerSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isInternal": {
            "type": "boolean"
          }
        }
      },
      "ActivityModel": {
        "type": "object",
        "required": [
          "startDateTime",
          "activityType",
          "ownerUser",
          "name"
        ],
        "properties": {
          "startDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isClosed": {
            "type": "boolean"
          },
          "isAllDay": {
            "type": "boolean"
          },
          "hasDuration": {
            "type": "boolean"
          },
          "isUnassigned": {
            "type": "boolean"
          },
          "hasHours": {
            "type": "boolean",
            "readOnly": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 0,
            "nullable": true
          },
          "activityType": {
            "$ref": "#/components/schemas/ActivityActivityType",
            "x-relation": "ActivityTypeModel"
          },
          "ownerUser": {
            "$ref": "#/components/schemas/ActivityOwnerModel",
            "x-relation": "UserOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ActivityCustomer",
            "x-relation": "CustomerModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ActivityPhase",
            "x-relation": "PhaseOutputModel"
          },
          "recurrenceParentActivityGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ActivityModel"
          },
          "projectTaskStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProjectTaskStatusModel"
          },
          "recurrence": {
            "nullable": true,
            "$ref": "#/components/schemas/ActivityRecurrenceModel"
          },
          "recurrenceRule": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "recurrenceType": {
            "readOnly": true,
            "$ref": "#/components/schemas/RecurrenceType"
          },
          "isApproved": {
            "type": "boolean",
            "readOnly": true,
            "nullable": true
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "ActivityActivityType": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "category": {
            "readOnly": true,
            "$ref": "#/components/schemas/ActivityCategory"
          }
        }
      },
      "ActivityOwnerModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "keywords": {
            "type": "array",
            "readOnly": true,
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ActivityOwnerKeyword"
            }
          }
        }
      },
      "ActivityOwnerKeyword": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ActivityCustomer": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ActivityPhase": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "isLocked": {
            "type": "boolean",
            "readOnly": true
          },
          "projectGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "ProjectOutputModel"
          },
          "projectName": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "projectNumber": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          },
          "projectOwnerGuid": {
            "type": "string",
            "readOnly": true,
            "nullable": true,
            "x-relation-guid": "UserOutputModel"
          }
        }
      },
      "ActivityRecurrenceModel": {
        "type": "object",
        "required": [
          "frequency"
        ],
        "properties": {
          "frequency": {
            "$ref": "#/components/schemas/RecurrenceFrequency"
          },
          "pattern": {
            "nullable": true,
            "$ref": "#/components/schemas/RecurrencePattern"
          },
          "range": {
            "nullable": true,
            "$ref": "#/components/schemas/RecurrenceRange"
          },
          "exceptions": {
            "type": "array",
            "readOnly": true,
            "nullable": true,
            "items": {
              "type": "string",
              "format": "date-time"
            }
          },
          "lastOccurrenceDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "x-relation": null
      },
      "RecurrenceFrequency": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Daily",
          "Weekly",
          "Monthly",
          "Yearly"
        ],
        "enum": [
          "Daily",
          "Weekly",
          "Monthly",
          "Yearly"
        ]
      },
      "RecurrencePattern": {
        "type": "object",
        "properties": {
          "daily": {
            "nullable": true,
            "$ref": "#/components/schemas/DailyModel"
          },
          "weekly": {
            "nullable": true,
            "$ref": "#/components/schemas/WeeklyModel"
          },
          "monthly": {
            "nullable": true,
            "$ref": "#/components/schemas/MonthlyModel"
          },
          "yearly": {
            "nullable": true,
            "$ref": "#/components/schemas/YearlyModel"
          }
        },
        "x-relation": null
      },
      "DailyModel": {
        "type": "object",
        "properties": {
          "interval": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "everyWeekday": {
            "type": "boolean"
          }
        }
      },
      "WeeklyModel": {
        "type": "object",
        "properties": {
          "interval": {
            "type": "integer",
            "format": "int32"
          },
          "monday": {
            "type": "boolean"
          },
          "tuesday": {
            "type": "boolean"
          },
          "wednesday": {
            "type": "boolean"
          },
          "thursday": {
            "type": "boolean"
          },
          "friday": {
            "type": "boolean"
          },
          "saturday": {
            "type": "boolean"
          },
          "sunday": {
            "type": "boolean"
          }
        }
      },
      "MonthlyModel": {
        "type": "object",
        "properties": {
          "interval": {
            "type": "integer",
            "format": "int32"
          },
          "dayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dayOrdinal": {
            "nullable": true,
            "$ref": "#/components/schemas/DayOrdinal"
          },
          "dayOrdinalOption": {
            "nullable": true,
            "$ref": "#/components/schemas/DayOrdinalOption"
          }
        }
      },
      "DayOrdinal": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "First",
          "Second",
          "Third",
          "Fourth",
          "Last"
        ],
        "enum": [
          "First",
          "Second",
          "Third",
          "Fourth",
          "Last"
        ]
      },
      "DayOrdinalOption": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Sunday",
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "WeekDay",
          "Saturday",
          "WeekendDay",
          "Day"
        ],
        "enum": [
          "Sunday",
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "WeekDay",
          "Saturday",
          "WeekendDay",
          "Day"
        ]
      },
      "YearlyModel": {
        "type": "object",
        "properties": {
          "dayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "month": {
            "$ref": "#/components/schemas/Months"
          },
          "dayOrdinal": {
            "nullable": true,
            "$ref": "#/components/schemas/DayOrdinal"
          },
          "dayOrdinalOption": {
            "nullable": true,
            "$ref": "#/components/schemas/DayOrdinalOption"
          }
        }
      },
      "Months": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "January",
          "February",
          "March",
          "April",
          "May",
          "June",
          "July",
          "August",
          "September",
          "October",
          "November",
          "December"
        ],
        "enum": [
          "January",
          "February",
          "March",
          "April",
          "May",
          "June",
          "July",
          "August",
          "September",
          "October",
          "November",
          "December"
        ]
      },
      "RecurrenceRange": {
        "type": "object",
        "properties": {
          "maxOccurrences": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "recursUntilDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        },
        "x-relation": null
      },
      "RecurrenceType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Occurrence",
          "Exception",
          "Series"
        ],
        "enum": [
          "None",
          "Occurrence",
          "Exception",
          "Series"
        ]
      },
      "PhaseStatusTypeModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "isActive": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "ProjectFeeOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeProductSubModel",
            "x-relation": "ProductOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "hasVolumePricing": {
            "type": "boolean"
          },
          "productType": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "displayPeriodStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserSubModel",
            "x-relation": "UserOutputModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectCostCenterSubModel",
            "x-relation": "CostCenterModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectSalesAccountSubModel",
            "x-relation": "SalesAccountModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "billingSchedule": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeBillingScheduleType"
          },
          "plannedBillingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "billingDependencyPhase": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeePhaseSubModel",
            "x-relation": "PhaseOutputModel"
          },
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "externalID": {
            "type": "string",
            "nullable": true
          },
          "invoice": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeInvoiceSubModel",
            "x-relation": "PhaseOutputModel"
          },
          "invoiceRowGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowComment": {
            "type": "string",
            "nullable": true
          },
          "isRecurrenceRule": {
            "type": "boolean"
          },
          "recurrenceRuleGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ActivityRecurrenceModel"
          }
        }
      },
      "ProjectFeeProjectSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "companyGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CompanyModel"
          }
        }
      },
      "ProjectFeeCustomerSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ProjectFeeProductSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProductType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "OwnWork",
          "Products",
          "Subcontracting"
        ],
        "enum": [
          "FixedFees",
          "Materials",
          "Subcontracting"
        ]
      },
      "UserSubModel": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "companyGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CompanyModel"
          }
        }
      },
      "ProjectCostCenterSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "identifier": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProjectSalesAccountSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProjectFeeBillingScheduleType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Immediately",
          "OnDate",
          "WhenTaskIsCompleted",
          "Recurring"
        ],
        "enum": [
          "Immediately",
          "OnDate",
          "WhenPhaseCompleted",
          "Recurring"
        ]
      },
      "ProjectFeePhaseSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "isCompleted": {
            "type": "boolean"
          }
        }
      },
      "ProjectFeeInvoiceSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "DeletedProjectFeeModel": {
        "type": "object",
        "properties": {
          "deletedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "phase": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "PhaseOutputModel"
          },
          "project": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "ProjectOutputModel"
          },
          "customer": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "CustomerModel"
          },
          "user": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "product": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "ProductOutputModel"
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "readOnly": true,
            "format": "date",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProductOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "productCategory": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProductCategoryModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductSalesAccountSubModel",
            "x-relation": "SalesAccountModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "type": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          },
          "proposalDescription": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProductSalesAccountSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProductForProjectOutputModel": {
        "type": "object",
        "properties": {
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductOutputModel"
          },
          "isVolumePriced": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "ProductCountrySettingsModel": {
        "type": "object",
        "required": [
          "country",
          "product"
        ],
        "properties": {
          "country": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "CountryModel"
          },
          "product": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "ProductOutputModel"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "ProjectBillingCustomerModel": {
        "type": "object",
        "required": [
          "project",
          "billingCustomer"
        ],
        "properties": {
          "project": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "ProjectOutputModel"
          },
          "billingCustomer": {
            "$ref": "#/components/schemas/BillingCustomerModel",
            "x-relation": "CustomerModel"
          },
          "isDefault": {
            "type": "boolean"
          },
          "canBeDeleted": {
            "type": "boolean",
            "readOnly": true
          },
          "billingAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/BillingAddressModel",
            "x-relation": "AddressModel"
          },
          "billingContact": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ContactModel"
          },
          "eInvoicingInfo": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerEInvoicingModel",
            "x-relation": "EInvoicingAddressOutputModel"
          },
          "deliveryAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/BillingAddressModel",
            "x-relation": "AddressModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "BillingCustomerModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "eInvoiceAddress": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "eInvoiceOperator": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "BillingAddressModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "addressline": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "city": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "country": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "ProjectOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "projectStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectStatusSubModel"
          },
          "isInternal": {
            "type": "boolean"
          },
          "internalName": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isClosed": {
            "type": "boolean"
          },
          "closedDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "isJoiningAllowed": {
            "type": "boolean",
            "default": true
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "projectOwner": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "businessUnit": {
            "nullable": true,
            "$ref": "#/components/schemas/BusinessUnitSubModel",
            "x-relation": "BusinessUnitModel"
          },
          "currency": {
            "nullable": true,
            "$ref": "#/components/schemas/CurrencySubModel2",
            "x-relation": "CurrencyOutputModel"
          },
          "customerContact": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerContactSubModel",
            "x-relation": "ContactModel"
          },
          "salesStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/SalesStatusSubModel"
          },
          "salesPerson": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "probability": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "expectedOrderDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "expectedValue": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "deadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "leadSource": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "LeadSourceModel"
          },
          "rootPhase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          },
          "pricelist": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectPricelistSubModel",
            "x-relation": "PriceListOutputModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectCostCenterSubModel",
            "x-relation": "CostCenterModel"
          },
          "paymentTerm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ourReference": {
            "type": "string",
            "nullable": true
          },
          "yourReference": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "string",
            "nullable": true
          },
          "invoiceNotes": {
            "type": "string",
            "nullable": true
          },
          "billingContact": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "ContactModel"
          },
          "invoiceTemplate": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectInvoiceTemplateSubModel",
            "x-relation": "InvoiceTemplateModel"
          },
          "useWorkTypesFromSetting": {
            "type": "boolean",
            "default": true
          },
          "defaultWorkType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "WorkTypeOutputModel"
          },
          "useProductsFromSetting": {
            "type": "boolean",
            "default": true
          },
          "isMileageBillable": {
            "type": "boolean"
          },
          "isDailyAllowanceBillable": {
            "type": "boolean"
          },
          "isOtherTravelExpensesBillable": {
            "type": "boolean"
          },
          "useOvertimeMultipliers": {
            "type": "boolean",
            "default": true
          },
          "keywords": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ModelWithName"
            }
          },
          "completionEstimatePercentage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "calculatedCompletionPercentage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "ProjectStatusSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "projectStatusTypeGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseStatusTypeModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        },
        "x-relation": null
      },
      "ProjectCustomerSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "BusinessUnitSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "companyGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CompanyModel"
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "companyBusinessUnitGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "BusinessUnitModel"
          },
          "companyCountryGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CountryModel"
          },
          "companyCurrencyGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CurrencyOutputModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CurrencySubModel2": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerContactSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean"
          }
        }
      },
      "SalesStatusSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "salesStatusTypeGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          }
        },
        "x-relation": null
      },
      "ProjectPricelistSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "isCustom": {
            "type": "boolean"
          },
          "isVolumePricing": {
            "type": "boolean"
          }
        }
      },
      "ProjectInvoiceTemplateSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "templateInvoiceGuid": {
            "type": "string",
            "deprecated": true,
            "x-deprecatedMessage": "Not in use anymore.",
            "nullable": true,
            "x-relation-guid": "InvoiceTemplateModel"
          }
        }
      },
      "ProjectInputModelBase": {
        "type": "object",
        "required": [
          "name",
          "customer",
          "projectOwner"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "customer": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "CustomerModel"
          },
          "projectOwner": {
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "UserOutputModel"
          },
          "isInternal": {
            "type": "boolean"
          },
          "internalName": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isClosed": {
            "type": "boolean"
          },
          "isJoiningAllowed": {
            "type": "boolean",
            "default": true
          },
          "businessUnit": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "BusinessUnitModel"
          },
          "customerContact": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ContactModel"
          },
          "salesPerson": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "UserOutputModel"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "deadline": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "leadSource": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "LeadSourceModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CostCenterModel"
          },
          "paymentTerm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ourReference": {
            "type": "string",
            "nullable": true
          },
          "yourReference": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "string",
            "nullable": true
          },
          "invoiceNotes": {
            "type": "string",
            "nullable": true
          },
          "billingContact": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ContactModel"
          },
          "invoiceTemplate": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceTemplateSubModel",
            "x-relation": "InvoiceTemplateModel"
          },
          "useOvertimeMultipliers": {
            "type": "boolean",
            "default": true
          },
          "useWorktypesFromSetting": {
            "type": "boolean",
            "default": true
          },
          "useProductsFromSetting": {
            "type": "boolean",
            "default": true
          },
          "completionEstimatePercentage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "salesStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleSalesStatusInputModel"
          },
          "projectStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleProjectStatusInputModel"
          },
          "currency": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "CurrencyOutputModel"
          },
          "probability": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "expectedOrderDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "expectedValue": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          }
        }
      },
      "InvoiceTemplateSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceTemplateModel"
          },
          "templateInvoiceGuid": {
            "type": "string",
            "deprecated": true,
            "x-deprecatedMessage": "Not in use anymore.",
            "nullable": true,
            "x-relation-guid": "InvoiceTemplateModel"
          }
        }
      },
      "SimpleSalesStatusInputModel": {
        "type": "object",
        "properties": {
          "salesStatusTypeGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "SalesStatusTypeOutputModel"
          }
        }
      },
      "SimpleProjectStatusInputModel": {
        "type": "object",
        "properties": {
          "projectStatusTypeGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ProjectStatusTypeModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "MoneyInputModelWithNullableAmount": {
        "type": "object",
        "required": [
          "currencyCode"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "minLength": 1
          }
        },
        "x-relation": null
      },
      "ProjectTravelExpenseOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectTravelExpenseProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "PhaseOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CustomerModel"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserRequiredSubModel",
            "x-relation": "UserOutputModel"
          },
          "travelExpense": {
            "nullable": true,
            "$ref": "#/components/schemas/TravelExpenseSubModel",
            "x-relation": "TravelExpenseTypeOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCostExcludingPurchaseVat": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "purchaseVatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "travelStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "travelEndTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "travelReimbursementRequired": {
            "type": "boolean",
            "default": true
          },
          "travelReimbursement": {
            "nullable": true,
            "$ref": "#/components/schemas/TravelReimbursementSubModel",
            "x-relation": "TravelReimbursementSubModel"
          },
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "billingSchedule": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectTravelExpenseBillingScheduleType"
          },
          "plannedBillingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "billingDependencyPhase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          },
          "invoice": {
            "nullable": true,
            "$ref": "#/components/schemas/InvoiceSubModel",
            "x-relation": "InvoiceSubModel"
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "invoiceRowComment": {
            "type": "string",
            "nullable": true
          },
          "costAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CostAccountModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CostCenterModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "SalesAccountModel"
          },
          "attachmentCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ProjectTravelExpenseProjectSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "companyGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CompanyModel"
          },
          "isInternal": {
            "type": "boolean"
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "UserRequiredSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "companyGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CompanyModel"
          }
        }
      },
      "TravelExpenseSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "expenseClass": {
            "$ref": "#/components/schemas/ExpensesClass"
          },
          "includeTime": {
            "type": "boolean"
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExpensesClass": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Mileage",
          "DailyAllowance",
          "OtherTravelExpense"
        ],
        "enum": [
          "Mileage",
          "DailyAllowance",
          "OtherTravelExpense"
        ]
      },
      "TravelReimbursementSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "isApproved": {
            "type": "boolean"
          },
          "isLocked": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "approvalDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "ProjectTravelExpenseBillingScheduleType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Immediately",
          "WhenPhaseCompleted",
          "OnDate"
        ],
        "enum": [
          "Immediately",
          "WhenPhaseCompleted",
          "OnDate"
        ]
      },
      "InvoiceSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "DeletedProjectTravelExpenseModel": {
        "type": "object",
        "properties": {
          "deletedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "phase": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "PhaseOutputModel"
          },
          "project": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "ProjectOutputModel"
          },
          "customer": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "CustomerModel"
          },
          "user": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "travelExpense": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "TravelExpenseTypeOutputModel"
          },
          "description": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "readOnly": true,
            "format": "date",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "travelStartTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "travelEndTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PublicAuthenticationOutputModel": {
        "type": "object",
        "properties": {
          "access_token": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "refresh_token": {
            "type": "string"
          },
          "refresh_token_expires_in": {
            "type": "integer",
            "format": "uint64"
          },
          "refresh_token_expires_utc": {
            "type": "string",
            "format": "date-time"
          },
          "access_token_type": {
            "type": "string"
          },
          "access_token_expires_in": {
            "type": "integer",
            "format": "uint64"
          },
          "access_token_expires_utc": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ClientCredentials": {
        "type": "object",
        "required": [
          "client_id",
          "client_secret"
        ],
        "properties": {
          "client_id": {
            "type": "string",
            "minLength": 1
          },
          "client_secret": {
            "type": "string",
            "minLength": 1
          },
          "scope": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AccessTokenCredentials": {
        "type": "object",
        "properties": {
          "grant_type": {
            "$ref": "#/components/schemas/GrantType"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "redirect_uri": {
            "type": "string",
            "nullable": true
          },
          "client_id": {
            "type": "string",
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "refresh_token": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GrantType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "ClientCredentials",
          "AuthorizationCode",
          "RefreshToken"
        ],
        "enum": [
          "client_credentials",
          "authorization_code",
          "refresh_token"
        ]
      },
      "OAuthOutputModel": {
        "type": "object",
        "properties": {
          "access_token": {
            "type": "string",
            "nullable": true
          },
          "token_type": {
            "type": "string",
            "nullable": true
          },
          "expires_in": {
            "type": "integer",
            "format": "uint64"
          },
          "refresh_token": {
            "type": "string",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OAuthErrorOutputModel": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/OAuthError"
          },
          "error_description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OAuthError": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "InvalidRequest",
          "InvalidClient",
          "InvalidGrant",
          "InvalidScope",
          "UnauthorizedClient",
          "UnsupportedGrantType"
        ],
        "enum": [
          "invalid_request",
          "invalid_client",
          "invalid_grant",
          "invalid_scope",
          "unauthorized_client",
          "unsupported_grant_type"
        ]
      },
      "ReimbursedProjectFeeOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ReimbursedProjectFeeProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProductOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "UserOutputModel"
          },
          "invoiceGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseOutputModel"
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "productType": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          }
        }
      },
      "ReimbursedProjectFeeProjectSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SalesStatusTypeOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "name": {
            "type": "string",
            "nullable": false
          },
          "guid": {
            "type": "string",
            "nullable": false
          },
          "isActive": {
            "type": "boolean"
          },
          "salesState": {
            "$ref": "#/components/schemas/SalesStatusType"
          },
          "defaultProbability": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isProposalDefault": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "SalesStatusType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "InProgress",
          "Won",
          "Lost"
        ],
        "enum": [
          "InProgress",
          "Won",
          "Lost"
        ]
      },
      "SalesStatusTypeInputModel": {
        "type": "object",
        "required": [
          "name",
          "salesState"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "salesState": {
            "$ref": "#/components/schemas/SalesStatusType"
          },
          "defaultProbability": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isProposalDefault": {
            "type": "boolean",
            "default": false,
            "nullable": true
          }
        }
      },
      "TravelExpenseTypeCountrySettingsModel": {
        "type": "object",
        "required": [
          "country",
          "product"
        ],
        "properties": {
          "country": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "CountryModel"
          },
          "product": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "ProductOutputModel"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "purchaseVatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "UserOutputModel": {
        "type": "object",
        "required": [
          "firstName",
          "lastName"
        ],
        "properties": {
          "firstName": {
            "type": "string",
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "minLength": 1
          },
          "salutation": {
            "nullable": true,
            "$ref": "#/components/schemas/SalutationType"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "socialSecurityNumber": {
            "type": "string",
            "nullable": true
          },
          "businessUnit": {
            "nullable": true,
            "$ref": "#/components/schemas/BusinessUnitSubModel",
            "x-relation": "BusinessUnitModel"
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "WorkTypeOutputModel"
          },
          "permissionProfile": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PermissionProfileModel"
          },
          "superiorUser": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "UserOutputModel"
          },
          "workContract": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWorkContractSubModel",
            "x-relation": "WorkContractOutputModel"
          },
          "lastLogin": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "satisfaction": {
            "nullable": true,
            "$ref": "#/components/schemas/SatisfactionLevelType"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "nullable": true,
            "$ref": "#/components/schemas/UserCountrySubModel",
            "x-relation": "CountryModel"
          },
          "countryRegion": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CountryRegionModel"
          },
          "culture": {
            "nullable": true,
            "$ref": "#/components/schemas/UserCultureSubModel",
            "x-relation": "FormattingCultureModel"
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/UserLanguageSubModel",
            "x-relation": "LanguageModel"
          },
          "timezone": {
            "nullable": true,
            "$ref": "#/components/schemas/TimezoneModel"
          },
          "birthDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "bankAccountNumber": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "keywords": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/UserKeywordSubModel"
            }
          },
          "defaultActivityType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ActivityTypeModel"
          },
          "userType": {
            "nullable": true,
            "$ref": "#/components/schemas/LicenseUserType"
          },
          "notificationSettings": {
            "nullable": true,
            "$ref": "#/components/schemas/UserNotificationSettingsModel"
          }
        }
      },
      "UserWorkContractSubModel": {
        "type": "object",
        "required": [
          "title",
          "startDate"
        ],
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "dailyHours": {
            "type": "number",
            "format": "double"
          },
          "isOvertimeAllowed": {
            "type": "boolean"
          },
          "isFlextimeActive": {
            "type": "boolean",
            "default": true
          },
          "flextimeLimitPerDay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "workWeek": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": false,
              "$ref": "#/components/schemas/Workweek"
            }
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "hourCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          }
        }
      },
      "UserCountrySubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "code3": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          },
          "hasRegions": {
            "$ref": "#/components/schemas/CountryRegionsStatus"
          }
        }
      },
      "UserCultureSubModel": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UserLanguageSubModel": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "englishName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TimezoneModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "systemName": {
            "type": "string",
            "nullable": true
          },
          "ianaName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UserKeywordSubModel": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LicenseUserType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "FullUser",
          "Employee",
          "RestrictedEmployee",
          "Subcontractor"
        ],
        "enum": [
          "FullUser",
          "Employee",
          "RestrictedEmployee",
          "Subcontractor"
        ]
      },
      "UserNotificationSettingsModel": {
        "type": "object",
        "properties": {
          "sendNewActivityEmail": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "sendTodaysAgendaEmail": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "sendWeeklySummaryEmail": {
            "type": "boolean",
            "default": true,
            "nullable": true
          }
        }
      },
      "GetUsersPurpose": {
        "type": "string",
        "description": "Purpose used for getting the users.",
        "x-enumNames": [
          "AbsenceOwner",
          "AccountOwner",
          "ActivityOwner",
          "ActivityParticipant",
          "BillingContact",
          "ProjectManager",
          "SalesPerson",
          "SuperiorUser",
          "TermsOfServiceApprover"
        ],
        "enum": [
          "AbsenceOwner",
          "AccountOwner",
          "ActivityOwner",
          "ActivityParticipant",
          "BillingContact",
          "ProjectManager",
          "SalesPerson",
          "SuperiorUser",
          "TermsOfServiceApprover"
        ]
      },
      "TravelReimbursementOutputModel": {
        "type": "object",
        "properties": {
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "UserOutputModel"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "approvalDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approvedByUser": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "UserOutputModel"
          },
          "advancePayment": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "total": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "totalExpenses": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "groupBy": {
            "$ref": "#/components/schemas/GroupByType"
          },
          "canChangeApproval": {
            "type": "boolean"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "travelReimbursementStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "TravelReimbursementStatusModel"
          }
        }
      },
      "GroupByType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Date",
          "Category",
          "Project"
        ],
        "enum": [
          "None",
          "Date",
          "Category",
          "Project"
        ]
      },
      "TravelReimbursementInputModel": {
        "type": "object",
        "required": [
          "user"
        ],
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "advancePayment": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "groupBy": {
            "$ref": "#/components/schemas/GroupByType"
          },
          "travelReimbursementStatus": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "TravelReimbursementStatusModel"
          },
          "user": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "WorkdayOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "isCompleted": {
            "type": "boolean"
          }
        }
      },
      "WorkdayModel": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "userGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "UserOutputModel"
          },
          "isReadOnly": {
            "type": "boolean"
          },
          "isCompleted": {
            "type": "boolean"
          },
          "isOvertimeAllowed": {
            "type": "boolean"
          },
          "expectedHours": {
            "type": "number",
            "readOnly": true,
            "format": "double"
          },
          "enteredHours": {
            "type": "number",
            "format": "double"
          },
          "isHoliday": {
            "type": "boolean"
          },
          "holidayName": {
            "type": "string",
            "nullable": true
          },
          "flextimeLimitPerDay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "absenceHours": {
            "type": "number",
            "format": "double"
          },
          "incompleteTimingMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "enteredTimeEntries": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "WorkTypeOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isProductive": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkTypeSalesAccountSubModel",
            "x-relation": "SalesAccountModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "hourCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          }
        }
      },
      "WorkTypeSalesAccountSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "VatRateOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "percentage": {
            "type": "number",
            "format": "double"
          },
          "code": {
            "type": "string",
            "maxLength": 10,
            "minLength": 0,
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "countryGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CountryModel"
          }
        }
      },
      "VatRateInputModel": {
        "type": "object",
        "required": [
          "percentage"
        ],
        "properties": {
          "percentage": {
            "type": "number",
            "format": "double"
          },
          "code": {
            "type": "string",
            "maxLength": 10,
            "minLength": 0,
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "countryGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CountryModel"
          }
        }
      },
      "WorkHourOutputModel": {
        "type": "object",
        "required": [
          "eventDate"
        ],
        "properties": {
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkHourPhaseSubModel",
            "x-relation": "PhaseOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkHourCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkHourWorkTypeSubModel",
            "x-relation": "WorkTypeOutputModel"
          },
          "invoice": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkHourInvoiceSubModel",
            "x-relation": "InvoiceOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "plannedInvoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "billableStatus": {
            "$ref": "#/components/schemas/BillableStatusType"
          },
          "isProductive": {
            "type": "boolean",
            "nullable": true
          },
          "isApproved": {
            "type": "boolean",
            "nullable": true
          },
          "isModifiable": {
            "type": "boolean"
          },
          "invoiceRowGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          "invoiceRowComment": {
            "type": "string",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNamePhotoFileModelAndRequiredGuid",
            "x-relation": "UserOutputModel"
          },
          "overtime": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "OvertimeModel"
          },
          "eventDate": {
            "type": "string",
            "format": "date"
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkHourProjectSubModel",
            "x-relation": "ProjectOutputModel"
          }
        }
      },
      "WorkHourPhaseSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "isCompleted": {
            "type": "boolean"
          },
          "isLocked": {
            "type": "boolean"
          }
        }
      },
      "WorkHourCustomerSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "WorkHourWorkTypeSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WorkHourInvoiceSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "BillableStatusType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Billable",
          "NotBillable",
          "RemovedFromInvoice"
        ],
        "enum": [
          "Billable",
          "NotBillable",
          "RemovedFromInvoice"
        ]
      },
      "WorkHourProjectSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "companyGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "CompanyModel"
          },
          "isClosed": {
            "type": "boolean"
          }
        }
      },
      "DeletedWorkHourModel": {
        "type": "object",
        "properties": {
          "deletedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "phase": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "PhaseOutputModel"
          },
          "project": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "ProjectOutputModel"
          },
          "customer": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "CustomerModel"
          },
          "user": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "UserOutputModel"
          },
          "workType": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseReadOnly",
            "x-relation": "WorkTypeOutputModel"
          },
          "eventDate": {
            "type": "string",
            "readOnly": true,
            "format": "date",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "plannedInvoiceQuantity": {
            "type": "number",
            "readOnly": true,
            "format": "double",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "WorkHourInputModel": {
        "type": "object",
        "required": [
          "eventDate",
          "phase",
          "user",
          "workType"
        ],
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date"
          },
          "invoice": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "plannedInvoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowComment": {
            "type": "string",
            "nullable": true
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "isApproved": {
            "type": "boolean",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "overtime": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "OvertimeModel"
          },
          "phase": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "PhaseOutputModel"
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModel"
          },
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "workType": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "WorkTypeOutputModel"
          }
        }
      },
      "ProjectStatusTypeModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "SalesStatusHistoryOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "salesStatusType": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "SalesStatusTypeOutputModel"
          },
          "project": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProjectOutputModel"
          },
          "timeStamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ProjectForecastOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "ProjectOutputModel"
          },
          "month": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "year": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "billingForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "billingForecastNotes": {
            "type": "string",
            "nullable": true
          },
          "expenseForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "expenseForecastNotes": {
            "type": "string",
            "nullable": true
          },
          "revenueForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "revenueForecastNotes": {
            "type": "string",
            "nullable": true
          },
          "laborExpenseForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "laborExpenseForecastNotes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProjectForecastInputModel": {
        "type": "object",
        "required": [
          "project",
          "month",
          "year"
        ],
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "month": {
            "type": "integer",
            "format": "int32",
            "maximum": 12.0,
            "minimum": 1.0
          },
          "year": {
            "type": "integer",
            "format": "int32",
            "maximum": 2075.0,
            "minimum": 1900.0
          },
          "billingForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "billingForecastNotes": {
            "type": "string",
            "nullable": true
          },
          "expenseForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "expenseForecastNotes": {
            "type": "string",
            "nullable": true
          },
          "revenueForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "revenueForecastNotes": {
            "type": "string",
            "nullable": true
          },
          "laborExpenseForecast": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "laborExpenseForecastNotes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BankAccountOutputModel": {
        "type": "object",
        "required": [
          "bankName",
          "accountNumber"
        ],
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "minLength": 1
          },
          "accountNumber": {
            "type": "string",
            "minLength": 1
          },
          "bic": {
            "type": "string",
            "nullable": true
          },
          "accountNumberFormat": {
            "default": "Iban",
            "$ref": "#/components/schemas/BankAccountFormat"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "businessUnit": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "BusinessUnitModel"
          },
          "company": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CompanyModel"
          }
        }
      },
      "BankAccountFormat": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Iban",
          "Bankgiro"
        ],
        "enum": [
          "Iban",
          "Bankgiro"
        ]
      },
      "CurrencyOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "rate": {
            "type": "number",
            "format": "double"
          },
          "symbol": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isOrganizationCurrency": {
            "type": "boolean"
          }
        }
      },
      "FlatRateInputModel": {
        "type": "object",
        "required": [
          "phase",
          "billingSchedule"
        ],
        "properties": {
          "phase": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "PhaseOutputModel"
          },
          "billingSchedule": {
            "$ref": "#/components/schemas/BillingScheduleType"
          },
          "plannedBillingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "price": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "includesHours": {
            "type": "number",
            "format": "double",
            "default": 0,
            "nullable": true
          },
          "billAdditionalHours": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "pricePerAdditionalHour": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          }
        }
      },
      "PriceListOutputModel": {
        "type": "object",
        "required": [
          "name",
          "currency"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isDefault": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "isCustom": {
            "type": "boolean"
          },
          "isVolumePricing": {
            "type": "boolean"
          },
          "currency": {
            "$ref": "#/components/schemas/PriceListCurrency2",
            "x-relation": "CurrencyOutputModel"
          }
        }
      },
      "PriceListCurrency2": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomPriceListOutputModel": {
        "type": "object",
        "required": [
          "name",
          "currency"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isDefault": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "isCustom": {
            "type": "boolean"
          },
          "isVolumePricing": {
            "type": "boolean"
          },
          "currency": {
            "$ref": "#/components/schemas/PriceListCurrency3",
            "x-relation": "CurrencyOutputModel"
          }
        }
      },
      "PriceListCurrency3": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PricelistVersionOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "pricelistGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PriceListOutputModel"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "ProductPriceOutputModel": {
        "type": "object",
        "properties": {
          "prices": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ProductPriceModel"
            }
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductPriceProductOutputSubModel",
            "x-relation": "ProductOutputModel"
          },
          "isAvailable": {
            "type": "boolean"
          },
          "isVolumePriced": {
            "type": "boolean"
          }
        }
      },
      "ProductPriceModel": {
        "type": "object",
        "properties": {
          "price": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "pricelistVersionGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PricelistVersionOutputModel"
          },
          "projectGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ProjectOutputModel"
          },
          "priceSource": {
            "$ref": "#/components/schemas/PriceSource"
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "PriceSource": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "ProductRegistry",
          "Pricelist",
          "Project"
        ],
        "enum": [
          "ProductRegistry",
          "Pricelist",
          "Project"
        ]
      },
      "ProductPriceProductOutputSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "productCode": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "productType": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          },
          "productCategory": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProductCategoryModel"
          }
        }
      },
      "ProductInputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "productCategory": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProductCategoryModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "SalesAccountModel"
          },
          "type": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          },
          "proposalDescription": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProjectFeeInputModel": {
        "type": "object",
        "required": [
          "project"
        ],
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "billingDependencyPhase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "billingSchedule": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeBillingScheduleType"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CostCenterModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "displayPeriodStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "hasVolumePricing": {
            "type": "boolean"
          },
          "invoice": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowComment": {
            "type": "string",
            "nullable": true
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "plannedBillingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProductOutputModel"
          },
          "productType": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "SalesAccountModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "UserOutputModel"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "externalID": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProjectMemberCostExceptionOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNamePhotoFileModelAndRequiredGuid",
            "x-relation": "UserOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectMemberCostExceptionProjectCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectMemberCostExceptionProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "cost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "currentContractCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          }
        }
      },
      "ProjectMemberCostExceptionProjectCustomerSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ProjectMemberCostExceptionProjectSubModel": {
        "type": "object",
        "required": [
          "guid"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isClosed": {
            "type": "boolean"
          }
        }
      },
      "ProjectMemberCostExceptionInputModel": {
        "type": "object",
        "required": [
          "user",
          "project"
        ],
        "properties": {
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "cost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          }
        }
      },
      "ProjectRecurringFeeRuleOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeCustomerSubModel",
            "x-relation": "CustomerModel"
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectFeeProductSubModel",
            "x-relation": "ProductOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "hasVolumePricing": {
            "type": "boolean"
          },
          "productType": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "displayPeriodStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserSubModel",
            "x-relation": "UserOutputModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectCostCenterSubModel",
            "x-relation": "CostCenterModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectSalesAccountSubModel",
            "x-relation": "SalesAccountModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "frequency": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "recurrenceStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "recurrenceEndType": {
            "nullable": true,
            "$ref": "#/components/schemas/RecurrenceEndTypes"
          },
          "recurrenceEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "recurrenceTimes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "recurringSalesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectSalesAccountSubModel",
            "x-relation": "SalesAccountModel"
          },
          "generatedTimes": {
            "type": "integer",
            "format": "int32"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "RecurrenceEndTypes": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Never",
          "AfterNumberOfTimes",
          "OnDate"
        ],
        "enum": [
          "Never",
          "AfterNumberOfTimes",
          "OnDate"
        ]
      },
      "BillablePeriod": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Any",
          "Past",
          "Future",
          "NowAndPast",
          "NowAndFuture"
        ],
        "enum": [
          "Any",
          "Past",
          "Future",
          "NowAndPast",
          "NowAndFuture"
        ]
      },
      "ProjectRecurringFeeRuleInputModel": {
        "type": "object",
        "required": [
          "frequency",
          "project"
        ],
        "properties": {
          "frequency": {
            "type": "integer",
            "format": "int32"
          },
          "recurrenceStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "recurrenceEndType": {
            "nullable": true,
            "$ref": "#/components/schemas/RecurrenceEndTypes"
          },
          "recurrenceEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "recurrenceTimes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "recurringSalesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "SalesAccountModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProductOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "hasVolumePricing": {
            "type": "boolean"
          },
          "productType": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductType"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "displayPeriodStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "UserOutputModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CostCenterModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "SalesAccountModel"
          }
        }
      },
      "ProjectTravelExpenseInputModel": {
        "type": "object",
        "required": [
          "phase",
          "project",
          "quantity",
          "travelExpense",
          "user"
        ],
        "properties": {
          "billingDependencyPhase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "billingSchedule": {
            "nullable": true,
            "$ref": "#/components/schemas/ProjectTravelExpenseBillingScheduleType"
          },
          "costAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CostAccountModel"
          },
          "costCenter": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CostCenterModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "invoice": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowComment": {
            "type": "string",
            "nullable": true
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "phase": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "PhaseOutputModel"
          },
          "plannedBillingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "purchaseVatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "SalesAccountModel"
          },
          "travelEndTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "travelExpense": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "TravelExpenseTypeOutputModel"
          },
          "travelReimbursement": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "TravelReimbursementOutputModel"
          },
          "travelReimbursementRequired": {
            "type": "boolean",
            "default": true
          },
          "travelStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModel"
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModel"
          },
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ReimbursedProjectTravelExpenseOutputModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ReimbursedProjectFeeProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProductOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "UserOutputModel"
          },
          "invoiceGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseOutputModel"
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "travelStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "travelEndTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ReimbursedWorkHourOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "UserOutputModel"
          },
          "overtime": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "OvertimeModel"
          },
          "eventDate": {
            "type": "string",
            "format": "date"
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "PhaseOutputModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ReimbursedWorkHourProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CustomerModel"
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "WorkTypeOutputModel"
          },
          "invoiceGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseOutputModel"
          },
          "invoiceRowGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "InvoiceRowOutputModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "invoiceRowDescription": {
            "type": "string",
            "nullable": true
          },
          "invoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceRowComment": {
            "type": "string",
            "nullable": true
          },
          "plannedInvoiceQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ReimbursedWorkHourProjectSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "TeamProductivityOutputModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "projectGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ProjectOutputModel"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/TeamProductivityUserModel",
            "x-relation": "UserOutputModel"
          },
          "workHours": {
            "type": "number",
            "format": "double"
          },
          "workHoursValue": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "workHoursCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "workHoursBillable": {
            "type": "number",
            "format": "double"
          },
          "calculatedShareOfBilling": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "calculatedShareOfBillingPercentage": {
            "type": "number",
            "format": "double"
          },
          "adjustedShareOfBilling": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "adjustedShareOfBillingPercentage": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "billableHoursPercentage": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "TeamProductivityUserModel": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TravelExpenseTypeOutputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isMileage": {
            "type": "boolean"
          },
          "isDailyAllowance": {
            "type": "boolean"
          },
          "expenseClass": {
            "nullable": true,
            "$ref": "#/components/schemas/ExpensesClass"
          },
          "purchaseVatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "includeTime": {
            "type": "boolean"
          },
          "costAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/TravelExpenseCostAccountSubModel",
            "x-relation": "CostAccountModel"
          },
          "unitCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "productCategory": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProductCategoryModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/ProductSalesAccountSubModel2",
            "x-relation": "SalesAccountModel"
          }
        }
      },
      "TravelExpenseCostAccountSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProductSalesAccountSubModel2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TravelExpenseTypeInputModel": {
        "type": "object",
        "required": [
          "name",
          "expenseClass",
          "unitCost"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "expenseClass": {
            "$ref": "#/components/schemas/ExpensesClass"
          },
          "purchaseVatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "includeTime": {
            "type": "boolean",
            "default": true
          },
          "costAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CostAccountModel"
          },
          "unitCost": {
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "measurementUnit": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "default": true,
            "nullable": true
          },
          "productCategory": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ProductCategoryModel"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "SalesAccountModel"
          }
        }
      },
      "TravelPriceOutputModel": {
        "type": "object",
        "properties": {
          "prices": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PriceModelBase"
            }
          },
          "product": {
            "nullable": true,
            "$ref": "#/components/schemas/TravelPriceProductSubModel",
            "x-relation": "ProductOutputModel"
          }
        }
      },
      "PriceModelBase": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          },
          "pricelistVersionGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PricelistVersionOutputModel"
          },
          "projectGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ProjectOutputModel"
          },
          "priceSource": {
            "$ref": "#/components/schemas/PriceSource"
          }
        }
      },
      "TravelPriceProductSubModel": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "productCode": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "expenseClass": {
            "nullable": true,
            "$ref": "#/components/schemas/ExpensesClass"
          }
        }
      },
      "UserInputModel": {
        "type": "object",
        "required": [
          "firstName",
          "lastName"
        ],
        "properties": {
          "firstName": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1
          },
          "salutation": {
            "nullable": true,
            "$ref": "#/components/schemas/SalutationType"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "socialSecurityNumber": {
            "type": "string",
            "nullable": true
          },
          "businessUnit": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "BusinessUnitModel"
          },
          "workType": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "WorkTypeOutputModel"
          },
          "superiorUser": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "satisfaction": {
            "nullable": true,
            "$ref": "#/components/schemas/SatisfactionLevelType"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CountryModel"
          },
          "countryRegion": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "CountryRegionModel"
          },
          "culture": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "FormattingCultureModel"
          },
          "language": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "LanguageModel"
          },
          "timezone": {
            "nullable": true,
            "$ref": "#/components/schemas/TimezoneModel"
          },
          "birthDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "bankAccountNumber": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "defaultActivityType": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "ActivityTypeModel"
          },
          "userType": {
            "nullable": true,
            "$ref": "#/components/schemas/LicenseUserType"
          },
          "permissionProfile": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PermissionProfileModel"
          },
          "createDefaultWorkContract": {
            "type": "boolean",
            "default": true
          },
          "notificationSettings": {
            "nullable": true,
            "$ref": "#/components/schemas/UserNotificationSettingsModel"
          }
        }
      },
      "WorktypeForProjectOutputModel": {
        "type": "object",
        "properties": {
          "worktype": {
            "nullable": true,
            "$ref": "#/components/schemas/WorkTypeOutputModel"
          },
          "hourPrice": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyOutputModel"
          }
        }
      },
      "WorkTypeInputModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isProductive": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          },
          "salesAccount": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "SalesAccountModel"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "hourCost": {
            "nullable": true,
            "$ref": "#/components/schemas/MoneyInputModelWithNullableAmount"
          }
        }
      },
      "VismaFinancialsCompanyModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "format": "int64",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OvertimePriceModel": {
        "type": "object",
        "required": [
          "overtime"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "overtime": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "OvertimeModel"
          },
          "pricingMultiplier": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "pricelistVersionGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PricelistVersionOutputModel"
          },
          "projectGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "ProjectOutputModel"
          },
          "priceSource": {
            "readOnly": true,
            "$ref": "#/components/schemas/PriceSource"
          }
        }
      },
      "OvertimeModel": {
        "type": "object",
        "required": [
          "name",
          "code"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "percentage": {
            "type": "number",
            "format": "double"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "code": {
            "type": "string",
            "minLength": 1
          },
          "includeInFlextime": {
            "type": "boolean",
            "nullable": true
          },
          "multipliesUnitCost": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "PhaseMemberModel": {
        "type": "object",
        "required": [
          "phaseGuid"
        ],
        "properties": {
          "phaseGuid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "PhaseOutputModel"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/PhaseMemberUserSubModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "readOnly": true,
            "default": true
          },
          "workHoursIncludingChildPhases": {
            "type": "number",
            "readOnly": true,
            "format": "double"
          },
          "workHours": {
            "type": "number",
            "readOnly": true,
            "format": "double"
          },
          "currentWorkcontractTitle": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "PhaseMemberUserSubModel": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PhaseMembersFromBusinessUnitUsersModel": {
        "type": "object",
        "required": [
          "phaseGuid",
          "businessUnitGuid"
        ],
        "properties": {
          "phaseGuid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "PhaseOutputModel"
          },
          "businessUnitGuid": {
            "type": "string",
            "minLength": 1,
            "x-relation-guid": "BusinessUnitModel"
          }
        }
      },
      "ResourceAllocationAction": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Delete",
          "Transfer"
        ],
        "enum": [
          "None",
          "Delete",
          "Transfer"
        ]
      },
      "ProjectBillingCustomerModel2": {
        "type": "object",
        "required": [
          "project",
          "billingCustomer"
        ],
        "properties": {
          "project": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "ProjectOutputModel"
          },
          "billingCustomer": {
            "$ref": "#/components/schemas/BillingCustomerModel",
            "x-relation": "CustomerModel"
          },
          "isDefault": {
            "type": "boolean"
          },
          "canBeDeleted": {
            "type": "boolean",
            "readOnly": true
          },
          "billingAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/BillingAddressModel",
            "x-relation": "AddressModel"
          },
          "billingContact": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ContactModel"
          },
          "eInvoicingInfo": {
            "nullable": true,
            "$ref": "#/components/schemas/CustomerEInvoicingModel",
            "x-relation": "EInvoicingAddressOutputModel"
          },
          "deliveryAddress": {
            "nullable": true,
            "$ref": "#/components/schemas/BillingAddressModel",
            "x-relation": "AddressModel"
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          }
        }
      },
      "ProjectTaskStatusModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "isDone": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TimeEntryModel": {
        "type": "object",
        "required": [
          "user",
          "phase",
          "timeEntryType",
          "eventDate"
        ],
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "UserOutputModel"
          },
          "customer": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CustomerModel"
          },
          "project": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/TimeEntryProject",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "PhaseOutputModel"
          },
          "timeEntryType": {
            "$ref": "#/components/schemas/ModelBaseWithRequiredGuid",
            "x-relation": "TimeEntryTypeModel"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "format": "date"
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "TimeEntryProject": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "TimeEntryTypeModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "identifier": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TravelReimbursementStatusModel": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "isLocked": {
            "type": "boolean",
            "default": false
          },
          "isApproved": {
            "type": "boolean",
            "default": false
          },
          "isActive": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "DeputyProjectOwnerOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "ProjectOutputModel"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "DeputyProjectOwnerInputModel": {
        "type": "object",
        "required": [
          "project",
          "user"
        ],
        "properties": {
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          }
        }
      },
      "ResourceAllocationOutputModel": {
        "type": "object",
        "properties": {
          "createdDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time"
          },
          "createdBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "readOnly": true,
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedBy": {
            "readOnly": true,
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "guid": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "derivedStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "derivedEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "allocationPercentage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "allocationHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "calculatedAllocationHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "projectMemberGuid": {
            "type": "string",
            "nullable": true,
            "x-relation-guid": "PhaseMemberModel"
          },
          "customer": {
            "nullable": true,
            "$ref": "#/components/schemas/ModelWithName",
            "x-relation": "CustomerModel"
          },
          "user": {
            "nullable": true,
            "$ref": "#/components/schemas/UserWithFirstNameLastNameAndPhotoFileModel",
            "x-relation": "UserOutputModel"
          },
          "project": {
            "nullable": true,
            "$ref": "#/components/schemas/ResourceAllocationProjectSubModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/ResourceAllocationPhaseSubModel",
            "x-relation": "PhaseOutputModel"
          }
        }
      },
      "ResourceAllocationProjectSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "isInternal": {
            "type": "boolean"
          },
          "number": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ResourceAllocationPhaseSubModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "ResourceAllocationCriteriaModel": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "UserOutputModel"
          },
          "userLicenseTypes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LicenseUserType"
            }
          },
          "phaseGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "PhaseOutputModel"
          },
          "projectGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "ProjectOutputModel"
          },
          "projectBusinessUnitGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "BusinessUnitModel"
          },
          "userBusinessUnitGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "BusinessUnitModel"
          },
          "projectManagerUserGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "UserOutputModel"
          },
          "userTagGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "UserKeywordModel"
          },
          "includeAbsences": {
            "type": "boolean"
          },
          "useSalesProbability": {
            "type": "boolean",
            "default": true
          },
          "projectStatusTypeGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "ProjectStatusTypeModel"
          },
          "projectTagGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "ProjectKeywordModel"
          },
          "superiorUserGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "UserOutputModel"
          },
          "salesStatusTypeGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "SalesStatusTypeOutputModel"
          },
          "salesProgresses": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true,
              "$ref": "#/components/schemas/SalesProgress"
            }
          },
          "resourceAllocationGuids": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            },
            "x-relation-guid": "ResourceAllocationOutputModel"
          }
        }
      },
      "SalesProgress": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "InProgress",
          "Won",
          "Lost"
        ],
        "enum": [
          "None",
          "InProgress",
          "Won",
          "Lost"
        ]
      },
      "ResourceAllocationInputModel": {
        "type": "object",
        "required": [
          "user",
          "project"
        ],
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "allocationPercentage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "allocationHours": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "UserOutputModel"
          },
          "project": {
            "$ref": "#/components/schemas/SimpleInputRequiredModel",
            "x-relation": "ProjectOutputModel"
          },
          "phase": {
            "nullable": true,
            "$ref": "#/components/schemas/SimpleInputModel",
            "x-relation": "PhaseOutputModel"
          }
        }
      }
    },
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "description": "This API uses OAuth 2 with the Client Credentials flow",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "/login/oauth/token",
            "refreshUrl": "/login/oauth/token",
            "scopes": {
              "customers:read": "Read-only access to customer resources",
              "customers:write": "Write access to customer resources",
              "customers:delete": "Delete access to customer resources",
              "projects:read": "Read-only access to project resources",
              "projects:write": "Write access to project resources",
              "projects:delete": "Delete access to project resources",
              "invoices:read": "Read-only access to invoice resources",
              "invoices:write": "Write access to invoice resources",
              "invoices:delete": "Delete access to invoice resources",
              "hours:read": "Read-only access to work hour resources",
              "hours:write": "Write access to work hour resources",
              "hours:delete": "Delete access to work hour resources",
              "travels:read": "Read-only access to travel expense related resources",
              "travels:write": "Write access to travel expense related resources",
              "travels:delete": "Delete access to travel expense related resources",
              "fees:read": "Read-only access to project fee related resources",
              "fees:write": "Write access to project fee related resources",
              "fees:delete": "Delete access to project fee related resources",
              "activities:read": "Read-only access to activity resources",
              "activities:write": "Write access to activity resources",
              "activities:delete": "Delete access to activity resources",
              "users:read": "Read-only access to user resources",
              "users:write": "Write access to user resources",
              "users:delete": "Delete access to user resources",
              "organization:read": "Read-only access to organization-level resources",
              "organization:write": "Write access to organization-level resources",
              "settings:read": "Read-only access to settings resources",
              "settings:write": "Write access to settings resources",
              "settings:delete": "Delete access to settings resources",
              "files:read": "Read-only access to files",
              "files:write": "Write access to files",
              "files:delete": "Delete access to files",
              "resourceallocations:read": "Read-only access to resource allocations",
              "resourceallocations:write": "Write access to resource allocations",
              "resourceallocations:delete": "Delete access to resource allocations"
            }
          }
        }
      }
    }
  }
}