{
  "openapi": "3.1.0",
  "info": {
    "title": "Calamari Public API",
    "description": "API for Calamari, your HR tool",
    "contact": {
      "name": "Calamari Team",
      "url": "https://developers.calamari.dev",
      "email": "developers@calamari.io"
    },
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://{tenantName}.calamari.io/api",
      "variables": {
        "tenantName": {
          "description": "This is the company domain you use with Calamari. If in doubt, check the base URL in API key configuration or ask your Calamari admin.",
          "default": "awesome-company"
        }
      }
    }
  ],
  "security": [
    {
      "basicAuth": []
    }
  ],
  "tags": [
    {
      "name": "Absence type",
      "description": "Absence Types API"
    },
    {
      "name": "Absence requests",
      "description": "Absence Requests API"
    },
    {
      "name": "Current shift status",
      "description": "Current Shift Status API"
    },
    {
      "name": "Projects",
      "description": "Projects API"
    },
    {
      "name": "Shifts and breaks",
      "description": "Shifts and Breaks API"
    },
    {
      "name": "Timesheet entries",
      "description": "Timesheet entries API"
    },
    {
      "name": "Working Week",
      "description": "Working Week API"
    },
    {
      "name": "Contract types",
      "description": "Contract Types API"
    },
    {
      "name": "Employees",
      "description": "Employees API"
    },
    {
      "name": "Holidays",
      "description": "Holidays API"
    },
    {
      "name": "Positions",
      "description": "Positions API"
    },
    {
      "name": "Teams",
      "description": "Teams API"
    },
    {
      "name": "People",
      "description": "Endpoints related to managing people records."
    },
    {
      "name": "People",
      "description": "Endpoints related to managing people records."
    }
  ],
  "paths": {
    "/leave/request/v1/create": {
      "post": {
        "tags": [
          "Absence requests"
        ],
        "summary": "Create an absence request.",
        "description": "Create an absence request.Expect error codes:<ol><li><strong>INVALID_ABSENCE_TIME</strong> - when invalid absence time provided</li><li><strong>INVALID_ABSENCE_ALLOWANCE</strong> - when employee absence allowance is not enough</li><li><strong>INVALID_HIRE_DATE</strong> - when employee hire date is invalid</li><li><strong>REQUESTING_RULES_VIOLATED</strong> - when requesting rules violated</li><li><strong>INVALID_APPROVAL_FLOW</strong> - when approval flow is not configured</li><li><strong>INVALID_ABSENCE_TYPE</strong> - when invalid absence type provided</li><li><strong>INVALID_REASON</strong> - when invalid reason provided</li><li><strong>INVALID_SUBSTITUTE</strong> - when invalid substitute provided</li><li><strong>INVALID_COMMENT</strong> - when invalid comment provided</li><li><strong>INVALID_TIME_PART</strong> - when invalid time part provided</li><li><strong>INVALID_ATTACHMENTS_REQUIRED</strong> - when attachments are required</li></ol>",
        "operationId": "createAbsenceRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAbsenceRequestForParticularEmployee"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AbsenceRequestId"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/request/v1/create-comment": {
      "post": {
        "tags": [
          "Absence requests"
        ],
        "summary": "Create comment for chosen request.",
        "description": "Create comment for chosen request.<br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_CONTENT</strong> - when invalid content provided</li><li><strong>INVALID_REQUEST</strong> - when invalid absence request provided</li></ol>",
        "operationId": "createComment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Comment"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommentOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/request/v1/find": {
      "post": {
        "tags": [
          "Absence requests"
        ],
        "summary": "Find absence requests of employee in dates range.",
        "description": "Find absence requests of employee in dates range.<br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_DATE_FROM</strong> - when invalid date from in filter provided</li><li><strong>INVALID_DATE_TO</strong> - when invalid date to in filter provided</li></ol>",
        "operationId": "findAbsenceRequests",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FindAbsencesInRangeIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AbsenceDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/request/v1/find-advanced": {
      "post": {
        "tags": [
          "Absence requests"
        ],
        "summary": "Find absence requests with advanced filtering by several parameters.",
        "description": "Find absence requests in dates range. <br /><br />If you provide more than one value in one filter attribute there is OR relation between them.  For instance: if you put in a filter: {employees: [\"john@mycompany.com\", \"kevin@mycompany.com\"]} it returns all John's and all Kevin's requests.<br /><br />When you fill more than one attribute in filter all conditions have to be fulfilled. There is AND relation between attributes. For instance: if you provide in filter {absenceTypes: [\"PTO\"], teams: [\"DevTeam\"]} then will be returned PTO requests of employees who are in team DevTeam.<br /><br />Expect error codes:<ol><li><strong>INVALID_DATE_FROM</strong> - when invalid time in filter provided</li><li><strong>INVALID_DATE_TO</strong> - when invalid time in filter provided</li><li><strong>INVALID_EMPLOYEE</strong> - when one of provided employees is invalid</li><li><strong>INVALID_ABSENCE_TYPE</strong> - when one of provided absence types is invalid</li><li><strong>INVALID_TEAM</strong> - when one of provided teams is invalid</li><li><strong>INVALID_POSITION</strong> - when one of provided positions is invalid</li><li><strong>INVALID_CONTRACT_TYPE</strong> - when one of provided contract types is invalid</li><li><strong>INVALID_CREATE_DATE_FROM</strong> - when invalid time in filter provided</li><li><strong>INVALID_CREATE_DATE_TO</strong> - when invalid time in filter provided</li><li><strong>INVALID_CREATE_UPDATE_FROM</strong> - when invalid time in filter provided</li><li><strong>INVALID_CREATE_UPDATE_TO</strong> - when invalid time in filter provided</li></ol>",
        "operationId": "findAbsenceRequestsAdvanced",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FindAbsencesAdvancedIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AbsenceDtoExtended"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/request/v1/remove": {
      "post": {
        "tags": [
          "Absence requests"
        ],
        "summary": "Remove chosen absence request.",
        "description": "Remove chosen absence request.<br /><br />Expect error codes:<ol><li><strong>INVALID_REQUEST</strong> - when invalid absence request provided</li></ol>",
        "operationId": "removeRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AbsenceRequestId"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Removed successfully."
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/v1/get-absence-types": {
      "post": {
        "tags": [
          "Absence type"
        ],
        "summary": "Get absence types with duration units.",
        "description": "Get absence types with duration units. <br/><br/>",
        "operationId": "getAbsenceTypes",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetAbsenceTypeOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/v1/entitlement-balance/all": {
      "post": {
        "tags": [
          "Absence type"
        ],
        "summary": "Get entitlement balance grouped by absence type.",
        "description": "Get entitlement balance grouped by absence type.\n<br/><br/>\nThe method allows you to get the entitlement balance for selected employee grouped by available absence types on a selected day.\n<br ><br />\nExpect error codes:\n<ol>\n<li><strong>INVALID_EMPLOYEE</strong> - when invalid balance owner provided</li>\n<li><strong>INVALID_DATE</strong> - when invalid date provided</li>\n</ol>\n",
        "operationId": "getAllAbsenceTypesEntitlementBalances",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetBalanceOfEmployee"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BalanceOutWithAbsenceType"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/v1/entitlement-balance/get": {
      "post": {
        "tags": [
          "Absence type"
        ],
        "summary": "Get entitlement balance.",
        "description": "Get entitlement balance.<br/><br/>The method allows you to get the entitlement balance for selected employee and absence type on a selected day.<br ><br />Expect error codes:<ol><li><strong>INVALID_ABSENCE_TYPE</strong> - when invalid absence type provided</li><li><strong>INVALID_EMPLOYEE</strong> - when invalid balance owner provided</li><li><strong>INVALID_DATE</strong> - when invalid date provided</li></ol>",
        "operationId": "getEntitlementBalance",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetBalanceOfEmployeeAndAbsenceType"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalanceOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/v1/entitlement-balance/get-advanced": {
      "post": {
        "tags": [
          "Absence type"
        ],
        "summary": "Get entitlement balance with advanced filtering by several parameters.",
        "description": "Get entitlement balance.<br/><br/>The method allows you to get the entitlement balance for selected employees and absence types on a selected day.<br ><br />Expect error codes:<ol><li><strong>INVALID_ABSENCE_TYPE</strong> - when invalid absence type provided</li><li><strong>INVALID_EMPLOYEE</strong> - when invalid balance owner provided</li><li><strong>INVALID_TEAM</strong> - when invalid team provided</li><li><strong>INVALID_DATE</strong> - when invalid date provided</li></ol>",
        "operationId": "getEntitlementBalances",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetEmployeesBalancesIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployeeBalanceOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/leave/v1/entitlement-balance/create": {
      "post": {
        "tags": [
          "Absence type"
        ],
        "summary": "Create entitlement balance.",
        "description": "Create entitlement balance.<br/><br/>The method allows you to add the entitlement balance of a selected absence type on a selected day.<br ><br />Expect error codes:<ol><li><strong>INVALID_AMOUNT</strong> - when invalid amount provided</li><li><strong>INVALID_AS_OF_DATE</strong> - when invalid date provided</li><li><strong>INVALID_ABSENCE_TYPE</strong> - when invalid absence type provided</li><li><strong>INVALID_EMPLOYEE</strong> - when invalid balance owner provided</li><li><strong>INVALID_COMMENT</strong> - when invalid comment provided</li></ol>",
        "operationId": "manualCreateEntitlementBalance",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBalanceIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModifyBalanceOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/contract-types/v1/all": {
      "post": {
        "tags": [
          "Contract types"
        ],
        "summary": "Get all contract types.",
        "description": "Get all contract types.",
        "operationId": "getContractTypes",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContractTypeOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/shift/status/v1/get-current-for-all": {
      "post": {
        "tags": [
          "Current shift status"
        ],
        "summary": "Get current shift status for all employees",
        "description": "Get current shift status for all employees.",
        "operationId": "getCurrentShiftStatusForAll",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CurrentShiftStatus"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/shift/status/v1/get-current": {
      "post": {
        "tags": [
          "Current shift status"
        ],
        "summary": "Get current shift status for one person.",
        "description": "Get current shift status for one person.<br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li></ol>",
        "operationId": "getCurrentShiftStatusForOnePerson",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShiftStatusRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentShiftStatus"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/shift/status/v1/presence/report": {
      "post": {
        "tags": [
          "Current shift status"
        ],
        "summary": "Get current presence report for all employees",
        "description": "Get current presence report for all employees. Results are paged by employees number.<br /><br />Expect error codes:<ol><li><strong>INVALID_PAGE</strong> - when invalid page provided</li><li><strong>INVALID_LIMIT</strong> - when invalid limit provided</li><li><strong>INVALID_DATE_FROM</strong> - when invalid date provided</li><li><strong>INVALID_DATE_TO</strong> - when invalid date provided</li></ol>",
        "operationId": "getPresenceReport",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetPresenceReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DailyPresenceReport"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/employees/v1/edit": {
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Edit employee.",
        "description": "Edit employee.\n<br/><br/>\nExpect error codes:\n<ol>\n<li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li>\n<li><strong>INVALID_FIRST_NAME</strong> - when first name is not provided or is invalid</li>\n<li><strong>INVALID_LAST_NAME</strong> - when last name is not provided or is invalid</li>\n<li><strong>INVALID_EMAIL</strong> - when email is not provided or is invalid</li>\n<li><strong>INVALID_WORKING_WEEK</strong> - when provided working week is invalid</li>\n<li><strong>INVALID_ACCEPTANCE_FLOW</strong> - when provided acceptance flow is invalid</li>\n<li><strong>INVALID_HOLIDAYS_CALENDAR</strong> - when provided holidays calendar is invalid</li>\n<li><strong>INVALID_SEX</strong> - when provided sex is invalid</li>\n<li><strong>INVALID_MARTIAL_STATUS</strong> - when provided marital status is invalid</li>\n<li><strong>INVALID_TEAM</strong> - when one of provided teams is invalid</li>\n<li><strong>INVALID_POSITION</strong> - when one of provided positions is invalid</li>\n<li><strong>INVALID_CONTRACT_TYPE</strong> - when contract type is invalid</li>\n<li><strong>INVALID_PERSONAL_EMAIL</strong> - when personal email is invalid</li>\n<li><strong>INVALID_DIRECT_MANAGER</strong> - when invalid direct manager is provided</li>\n</ol>\n",
        "operationId": "EditEmployee",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicEditEmployeeIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateEmployeeOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "x-calamari-is-deprecated",
            "position": "before"
          }
        ]
      }
    },
    "/employees/v1/create": {
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Create employee.",
        "description": "Create employee.\n<br/><br/>\nExpect error codes:\n<ol>\n<li><strong>INVALID_FIRST_NAME</strong> - when first name is not provided or is invalid</li>\n<li><strong>INVALID_LAST_NAME</strong> - when last name is not provided or is invalid</li>\n<li><strong>INVALID_EMAIL</strong> - when email is not provided or is invalid</li>\n<li><strong>INVALID_WORKING_WEEK</strong> - when working week is not provided or is invalid</li>\n<li><strong>INVALID_ACCEPTANCE_FLOW</strong> - when acceptance flow is not provided or is invalid</li>\n<li><strong>INVALID_HOLIDAYS_CALENDAR</strong> - when holidays calendar is not provided or is invalid</li>\n<li><strong>INVALID_SEX</strong> - when sex is not provided or is invalid</li>\n<li><strong>INVALID_MARTIAL_STATUS</strong> - when marital status is not provided or is invalid</li>\n<li><strong>INVALID_TEAM</strong> - when one of provided teams is invalid</li>\n<li><strong>INVALID_POSITION</strong> - when one of provided positions is invalid</li>\n<li><strong>INVALID_CONTRACT_TYPE</strong> - when contract type is invalid</li>\n<li><strong>INVALID_DIRECT_MANAGER</strong> - when invalid direct manager id is provided</li>\n<li><strong>LICENCE_MAX_USERS_EXCEEDED</strong> - when you reach the maximum number of seats within your subscription</li>\n</ol>\n",
        "operationId": "createEmployee",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCreateEmployeeIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateEmployeeOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "x-calamari-is-deprecated",
            "position": "before"
          }
        ]
      }
    },
    "/employees/v1/list": {
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Get all non archived employees.",
        "description": "If you want to find archived employees, please use search method.",
        "operationId": "getEmployees",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicEmployeesIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeesOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "x-calamari-is-deprecated",
            "position": "before"
          }
        ]
      }
    },
    "/employees/v1/invite": {
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Invite employee.",
        "description": "Invite employee.",
        "operationId": "inviteEmployee",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvitationEmployeeIn"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Invited successfully."
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "x-calamari-is-deprecated",
            "position": "before"
          }
        ]
      }
    },
    "/employees/v1/archive": {
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Mark employee as archived.",
        "description": "Mark employee as archived.",
        "operationId": "markEmployeeAsArchived",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicArchiveEmployeeIn"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successfully marked as archived."
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "x-calamari-is-deprecated",
            "position": "before"
          }
        ]
      }
    },
    "/employees/v1/search": {
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Get all employees.",
        "description": "Get all employees.",
        "operationId": "searchEmployees",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicSearchEmployeesIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation"
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "x-calamari-is-deprecated",
            "position": "before"
          }
        ]
      }
    },
    "/holiday/v1/find": {
      "post": {
        "tags": [
          "Holidays"
        ],
        "summary": "Find public holidays for employee in dates range.",
        "description": "Find public holidays for employee in dates range.<br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_DATE_FROM</strong> - when invalid time in filter provided</li><li><strong>INVALID_DATE_TO</strong> - when invalid time in filter provided</li></ol>",
        "operationId": "find",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FindHolidaysInRangeIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HolidayOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/positions/v1/create": {
      "post": {
        "tags": [
          "Positions"
        ],
        "summary": "Create a position.",
        "description": "Create a position.",
        "operationId": "createPosition",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePositionIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePositionOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/positions/v1/all": {
      "post": {
        "tags": [
          "Positions"
        ],
        "summary": "Get all positions.",
        "description": "Get all positions.",
        "operationId": "getPositions",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PositionDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/projects/v1/archive": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Archive project type.",
        "description": "Archive project type.<br /><br />Expect error codes:<ol><li><strong>INVALID_PROJECT</strong> - provided project id is invalid</li></ol>",
        "operationId": "archiveProjectType",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveProjectRequestIn"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/projects/v1/create": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Create project type.",
        "description": "Create project type.<br /><br />Expect error codes:<ol><li><strong>INVALID_NAME</strong> - when name is invalid</li><li><strong>INVALID_PERSON</strong> - when one of provided persons is invalid</li><li><strong>INVALID_TEAM</strong> - when one of provided teams is invalid</li></ol>",
        "operationId": "createProjectType",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectRequestIn"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectOutWithAssignedEmployeesTeams"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/projects/v1/get-projects-for-person": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Get project types for one person.",
        "description": "Get project types for one person.<br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li></ol>",
        "operationId": "getProjectForEmployee",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PersonForProjects"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/projects/v1/get-projects": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Get project types.",
        "description": "Get project types.",
        "operationId": "getProjects",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOutWithAssignedEmployeesTeams"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/projects/v1/update": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Update project type.",
        "description": "Update project type.<br /><br />Expect error codes:<ol><li><strong>INVALID_NAME</strong> - when name is invalid</li><li><strong>INVALID_PERSON</strong> - when one of provided persons is invalid</li><li><strong>INVALID_TEAM</strong> - when one of provided teams is invalid</li></ol>",
        "operationId": "updateProjectType",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditProjectRequestIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectOutWithAssignedEmployeesTeams"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/terminal/v1/break-start": {
      "post": {
        "tags": [
          "Shifts and breaks"
        ],
        "summary": "Start employee break.",
        "description": "Start employee break. <br /><br />Client application should send request immediately when event occurs. If there is any problem with connection or access to API event should be queued in clients side and then sent in order of occurence.<br /><br />Before you can use this method, please:<ol><li>Configure 'API Terminal' in Calamari Clockin configuration panel</li><li>Make sure API access is enabled</li></ol><br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_TIME</strong> - when invalid event time provided</li><li><strong>INVALID_BREAK_TYPE</strong> - when invalid break type id provided</li><li><strong>API_TERMINAL_NOT_AVAILABLE</strong> - no API terminal configured or the employee doesn't have access to this terminal</li></ol>",
        "operationId": "breakStart",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BreakIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BreakOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/terminal/v1/break-stop": {
      "post": {
        "tags": [
          "Shifts and breaks"
        ],
        "summary": "Stop employee break.",
        "description": "Stop employee break. <br /><br />Client application should send request immediately when event occurs. If there is any problem with connection or access to API event should be queued in clients side and then sent in order of occurence.<br /><br />Before you can use this method, please:<ol><li>Configure 'API Terminal' in Calamari Clockin configuration panel</li><li>Make sure API access is enabled</li></ol><br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_TIME</strong> - when invalid event time provided</li><li><strong>INVALID_BREAK_TYPE</strong> - when invalid break type id provided. You should use get-break-types method to find properly break type ID </li><li><strong>API_TERMINAL_NOT_AVAILABLE</strong> - no API terminal configured or the employee doesn't have access to this terminal</li></ol>",
        "operationId": "breakStop",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BreakIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BreakOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/terminal/v1/clock-in": {
      "post": {
        "tags": [
          "Shifts and breaks"
        ],
        "summary": "Start employees shift.",
        "description": "Start employee shift. If the employee shift has already been started via web browser, mobile app or any other terminal, the request is ignored and the method returns status 200.<br /><br />Client application should send request immediately when event occurs. If there is any problem with connection or access to API event should be queued in clients side and then sent in order of occurence.<br /><br />Before you can use this method, please:<ol><li>Configure 'API Terminal' in Calamari Clockin configuration panel</li><li>Make sure API access is enabled</li></ol><br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_TIME</strong> - when invalid event time provided</li><li><strong>API_TERMINAL_NOT_AVAILABLE</strong> - no API terminal configured or the employee doesn't have access to this terminal</li></ol>",
        "operationId": "clockIn",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PunchClockIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/terminal/v1/clock-out": {
      "post": {
        "tags": [
          "Shifts and breaks"
        ],
        "summary": "Finish employees shift.",
        "description": "Stop employee shift. If employee shift is not started in moment of request the request is ignored.<br /><br />Client application should send request immediately when event occurs. If there is any problem with connection or access to API event should be queued in clients side and then sent in order of occurence.<br /><br />Before you can use this method, please:<ol><li>Configure 'API Terminal' in Calamari Clockin configuration panel</li><li>Make sure API access is enabled</li></ol><br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_TIME</strong> - when invalid event time provided</li><li><strong>API_TERMINAL_NOT_AVAILABLE</strong> - no API terminal configured or the employee doesn't have access to this terminal</li></ol>",
        "operationId": "clockOut",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PunchClockOut"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/terminal/v1/get-break-types": {
      "post": {
        "tags": [
          "Shifts and breaks"
        ],
        "summary": "Get break types.",
        "description": "Get break types. <br /><br />",
        "operationId": "getBreakTypes",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetBreakTypeOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/terminal/v1/get-break-types-for-person": {
      "post": {
        "tags": [
          "Shifts and breaks"
        ],
        "summary": "Get break types for one person.",
        "description": "Get break types for one person.<br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li></ol>",
        "operationId": "getBreakTypesForEmployee",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PersonForBreakTypes"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetBreakTypeOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/terminal/v1/punch-clock": {
      "post": {
        "tags": [
          "Shifts and breaks"
        ],
        "summary": "Start or stop employee shift",
        "description": "Method indicates employee go through company's doors. Starts shift if it's not started or stops it otherwise.<br /><br />Client application should send request immediately when event occurs. If there is any problem with connection or access to API event should be queued in clients side and then sent in order of occurence.<br /><br />Before you can use this method, please:<ol><li>Configure 'API Terminal' in Calamari Clockin configuration panel</li><li>Make sure API access is enabled</li></ol><br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_TIME</strong> - when invalid event time provided</li><li><strong>API_TERMINAL_NOT_AVAILABLE</strong> - no API terminal configured or the employee doesn't have access to this terminal</li></ol>",
        "operationId": "punch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PunchClockIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/teams/v1/create": {
      "post": {
        "tags": [
          "Teams"
        ],
        "summary": "Create a team.",
        "description": "Create a team.",
        "operationId": "createTeam",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTeamIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateTeamOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/teams/v1/all": {
      "post": {
        "tags": [
          "Teams"
        ],
        "summary": "Get all teams.",
        "description": "Get all teams.",
        "operationId": "getTeams",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeamOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/teams/v1/remove": {
      "post": {
        "tags": [
          "Teams"
        ],
        "summary": "Remove chosen team.",
        "description": "Remove chosen team.<br /><br />Expect error codes:<ol><li><strong>INVALID_REQUEST</strong> - when invalid team provided</li></ol>",
        "operationId": "removeTeam",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TeamIdRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The team has been successfully removed."
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/teams/v1/update": {
      "post": {
        "tags": [
          "Teams"
        ],
        "summary": "Update chosen team.",
        "description": "Update chosen team.<br /><br />Expect error codes:<ol><li><strong>INVALID_REQUEST</strong> - when invalid team data provided</li></ol>",
        "operationId": "updateTeam",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTeamIn"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The team has been successfully updated."
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/timesheetentries/v1/create": {
      "post": {
        "tags": [
          "Timesheet entries"
        ],
        "summary": "Add historical timesheet entry.",
        "description": "Add employee shift. <br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_SHIFT_START</strong> - when invalid start of work time provided</li><li><strong>INVALID_SHIFT_END</strong> - when invalid finish of work time provided</li><li><strong>SHIFT_END_BEFORE_START</strong> - when end of work time is before start</li><li><strong>SHIFT_TO_SHORT</strong> - when shift period is shorter than one minute</li><li><strong>INVALID_BREAK_TYPE</strong> - when invalid break type id provided. You should use get-break-types method to find proper break type ID</li><li><strong>INVALID_BREAK_FOR_USER</strong> -  when break type is not available for employee</li><li><strong>INVALID_BREAK_START</strong> - when invalid start of break time provided</li><li><strong>INVALID_BREAK_END</strong> - when invalid finish of break time provided</li><li><strong>BREAK_END_BEFORE_START</strong> - when end of break time is before start</li><li><strong>BREAK_IS_NOT_IN_SHIFT_RANGE</strong> -  when break time range goes beyond work time range</li><li><strong>BREAK_TO_SHORT</strong> - when break period is shorter than one minute</li><li><strong>BREAKS_OVERLAP</strong> - when one break time range overlaps another</li><li><strong>INVALID_PROJECT_TYPE</strong> - when invalid project type id provided. You should use get-projects method to find proper project type ID</li><li><strong>INVALID_PROJECT_FOR_USER</strong> -  when project type is not available for employee. You should use get-projects-for-person method to find proper project type ID</li><li><strong>INVALID_PROJECT_TIME_ENTRY_START</strong> - when invalid start of project time entry provided</li><li><strong>INVALID_PROJECT_TIME_ENTRY_END</strong> - when invalid finish of project time entry provided</li><li><strong>PROJECT_TIME_ENTRY_END_BEFORE_START</strong> - when end of project time entry is before start</li><li><strong>PROJECT_TIME_ENTRY_IS_NOT_IN_SHIFT_RANGE</strong> -  when project time entry goes beyond work time range</li><li><strong>PROJECT_TIME_ENTRY_TO_SHORT</strong> - when project time entry is shorter than one minute</li><li><strong>PROJECT_TIME_ENTRIES_OVERLAP</strong> - when one project time entry overlaps another</li><li><strong>SHIFT_DESCRIPTION_TOO_LONG</strong> - when description contains more than 4096 characters</li><li><strong>SHIFT_DESCRIPTION_NOT_ALLOWED_FORMATTING</strong> - when description contains more not allowed HTML or Markdown formatting</li></ol>",
        "operationId": "addTimeEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTimesheetEntryIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntryOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/timesheetentries/v1/delete": {
      "post": {
        "tags": [
          "Timesheet entries"
        ],
        "summary": "Delete timesheet entry by id",
        "description": "Delete timesheet entry by id",
        "operationId": "deleteTimesheetEntryById",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteTimesheetEntryById"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Removed successfully."
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/timesheetentries/v1/find": {
      "post": {
        "tags": [
          "Timesheet entries"
        ],
        "summary": "Find timesheet entries with advanced filtering by several parameters.",
        "description": "Find timesheet entries in dates range. <br /><br />If you provide more than one value in one filter attribute there is OR relation between them.  For instance: if you put in a filter: {employees: [\"john@mycompany.com\", \"kevin@mycompany.com\"]} it returns all John's and all Kevin's timesheet entries.<br /><br />When you fill more than one attribute in filter all conditions have to be fulfilled. There is AND relation between attributes. For instance: if you provide in filter {contractTypes: [\"Full-time\"], teams: [\"DevTeam\"]} then timesheet entries of employees from Dev and Full-time<br /><br />The query returns all matching records for the selected time range and filters, with no pagination applied.<br /><br />Expect error codes:<ol><li><strong>INVALID_DATE_FROM</strong> - when invalid time in filter provided</li><li><strong>INVALID_DATE_TO</strong> - when invalid time in filter provided</li><li><strong>INVALID_EMPLOYEE</strong> - when one of provided employees is invalid</li><li><strong>INVALID_TEAM</strong> - when one of provided teams is invalid</li><li><strong>INVALID_POSITION</strong> - when one of provided positions is invalid</li><li><strong>INVALID_CONTRACT_TYPE</strong> - when one of provided contract types is invalid</li></ol>",
        "operationId": "findTimeEntries",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilterTimesheetEntriesIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimesheetEntryOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/timesheetentries/v1/balance": {
      "post": {
        "tags": [
          "Timesheet entries"
        ],
        "summary": "Find employees working time balances with advanced filtering by several parameters.",
        "description": "Find employees working time balances in dates range. <br /><br />If you provide more than one value in one filter attribute there is OR relation between them.  For instance: if you put in a filter: {employees: [\"john@mycompany.com\", \"kevin@mycompany.com\"]} it returns all John's and all Kevin's balances.<br /><br />When you fill more than one attribute in filter all conditions have to be fulfilled. There is AND relation between attributes. For instance: if you provide in filter {contractTypes: [\"Full-time\"], teams: [\"DevTeam\"]} then you receive balances of employees from Dev and Full-time<br /><br />Expect error codes:<ol><li><strong>INVALID_DATE_FROM</strong> - when invalid time in filter provided</li><li><strong>INVALID_DATE_TO</strong> - when invalid time in filter provided</li><li><strong>INVALID_EMPLOYEE</strong> - when one of provided employees is invalid</li><li><strong>INVALID_TEAM</strong> - when one of provided teams is invalid</li><li><strong>INVALID_POSITION</strong> - when one of provided positions is invalid</li><li><strong>INVALID_CONTRACT_TYPE</strong> - when one of provided contract types is invalid</li></ol>",
        "operationId": "findTimesheetBalances",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilterBalanceEntriesIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BalanceEntryOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/timesheetentries/v1/get-projects": {
      "post": {
        "tags": [
          "Timesheet entries"
        ],
        "summary": "Get project types.",
        "description": "Get project types.",
        "operationId": "getProjectTypes",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/timesheetentries/v1/get-projects-for-person": {
      "post": {
        "tags": [
          "Timesheet entries"
        ],
        "summary": "Get project types for one person.",
        "description": "Get project types for one person.<br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li></ol>",
        "operationId": "getProjectTypesForEmployee",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PersonForProjects"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectOut"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/clockin/timesheetentries/v1/update": {
      "post": {
        "tags": [
          "Timesheet entries"
        ],
        "summary": "Update historical timesheet entry.",
        "description": "Update employee shift. <br /><br />Expect error codes:<ol><li><strong>INVALID_EMPLOYEE</strong> - when invalid employee id provided</li><li><strong>INVALID_SHIFT_START</strong> - when invalid start of work time provided</li><li><strong>INVALID_SHIFT_END</strong> - when invalid finish of work time provided</li><li><strong>SHIFT_END_BEFORE_START</strong> - when end of work time is before start</li><li><strong>SHIFT_TO_SHORT</strong> - when shift period is shorter than one minute</li><li><strong>INVALID_BREAK_TYPE</strong> - when invalid break type id provided. You should use get-break-types method to find proper break type ID</li><li><strong>INVALID_BREAK_FOR_USER</strong> -  when break type is not available for employee</li><li><strong>INVALID_BREAK_START</strong> - when invalid start of break time provided</li><li><strong>INVALID_BREAK_END</strong> - when invalid finish of break time provided</li><li><strong>BREAK_END_BEFORE_START</strong> - when end of break time is before start</li><li><strong>BREAK_IS_NOT_IN_SHIFT_RANGE</strong> -  when break time range goes beyond work time range</li><li><strong>BREAK_TO_SHORT</strong> - when break period is shorter than one minute</li><li><strong>BREAKS_OVERLAP</strong> - when one break time range overlaps another</li><li><strong>INVALID_PROJECT_TYPE</strong> - when invalid project type id provided. You should use get-projects method to find proper project type ID</li><li><strong>INVALID_PROJECT_FOR_USER</strong> -  when project type is not available for employee. You should use get-projects-for-person method to find proper project type ID</li><li><strong>INVALID_PROJECT_TIME_ENTRY_START</strong> - when invalid start of project time entry provided</li><li><strong>INVALID_PROJECT_TIME_ENTRY_END</strong> - when invalid finish of project time entry provided</li><li><strong>PROJECT_TIME_ENTRY_END_BEFORE_START</strong> - when end of project time entry is before start</li><li><strong>PROJECT_TIME_ENTRY_IS_NOT_IN_SHIFT_RANGE</strong> -  when project time entry goes beyond work time range</li><li><strong>PROJECT_TIME_ENTRY_TO_SHORT</strong> - when project time entry is shorter than one minute</li><li><strong>PROJECT_TIME_ENTRIES_OVERLAP</strong> - when one project time entry overlaps another</li><li><strong>SHIFT_DESCRIPTION_TOO_LONG</strong> - when description contains more than 4096 characters</li><li><strong>SHIFT_DESCRIPTION_NOT_ALLOWED_FORMATTING</strong> - when description contains more not allowed HTML or Markdown formatting</li></ol>",
        "operationId": "updateTimeEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditTimesheetEntryIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntryOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. Reason and description are returned in json response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/working-week/v1/all": {
      "post": {
        "tags": [
          "Working Week"
        ],
        "summary": "Get all working weeks.",
        "description": "Get all working weeks.",
        "operationId": "getWorkingWeeks",
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkingWeekOut"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema-legacy"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failure. Provided ApiKey is valid but does not contain a scope required to perform requested operation"
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema-legacy"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema-legacy"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema-legacy"
                }
              }
            }
          }
        }
      }
    },
    "/people/v2": {
      "get": {
        "tags": [
          "People"
        ],
        "summary": "List all people",
        "description": "You can fetch a list of all people.\nYou can optionally specify a limit to control the number of results returned, and an offset to skip a specified number of entries from the start.\n",
        "operationId": "listAllPeople",
        "parameters": [
          {
            "$ref": "#/components/parameters/ContractTypesParameter"
          },
          {
            "$ref": "#/components/parameters/PositionsParameter"
          },
          {
            "$ref": "#/components/parameters/TeamsParameter"
          },
          {
            "$ref": "#/components/parameters/ArchivedParameter"
          },
          {
            "$ref": "#/components/parameters/ProjectionParameter"
          },
          {
            "$ref": "#/components/parameters/ProjectionFieldsParameter"
          },
          {
            "$ref": "#/components/parameters/LimitParameter"
          },
          {
            "$ref": "#/components/parameters/OffsetParameter"
          },
          {
            "$ref": "#/components/parameters/SortParameter"
          },
          {
            "$ref": "#/components/parameters/NullOrderingParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The request was successful. A list of people matching the specified criteria is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/search-people-response-schema"
                }
              }
            }
          },
          "400": {
            "description": "The request parameters are invalid. Check filters, pagination or projection options.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bad-request-error-schema"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema"
                }
              }
            }
          },
          "403": {
            "description": "You do not have permission to access this resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/forbidden-request-error-schema"
                }
              }
            }
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "People"
        ],
        "summary": "Create a new person",
        "description": "This endpoint allows you to add a new person to the Calamari.\nThe request must include essential details such as first name, last name,\ne-mail address, approval process, work schedule, and holidays calendar.\n",
        "operationId": "createPerson",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/add-person-request-schema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Person created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/add-person-response-schema"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid due to syntax errors or incorrect parameters. Check the request structure and data format.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bad-request-schema"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema"
                }
              }
            }
          },
          "403": {
            "description": "The license is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/forbidden-schema"
                }
              }
            }
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema"
                }
              }
            }
          }
        }
      }
    },
    "/people/v2/{id}": {
      "patch": {
        "tags": [
          "People"
        ],
        "summary": "Update a person",
        "description": "This endpoint allows you to partially update a person in Calamari.\nYou can send any number of fields in the request body.\nOnly the fields included in the request will be updated.\nIf a field is set to `null`, its value will be removed (if removal is allowed).\nFields that are not included in the request will remain unchanged, even if they exist in the system.\nThis means you can send both updated and unchanged fields, but only those explicitly provided in the request will be processed.\n",
        "operationId": "partialUpdatePerson",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/person-identifier-param-schema"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/update-person-request-schema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Person updated successfully."
          },
          "400": {
            "description": "The request is invalid due to syntax errors or incorrect parameters. Check the request structure and data format.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bad-request-schema"
                }
              }
            }
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema"
                }
              }
            }
          },
          "403": {
            "description": "The license is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/forbidden-schema"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource could not be found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/not-found-schema"
                }
              }
            }
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema"
                }
              }
            }
          }
        }
      }
    },
    "/people/v2/{id}/archive": {
      "post": {
        "tags": [
          "People"
        ],
        "summary": "Archive a person",
        "description": "This endpoint allows you to archive a person in Calamari.\n",
        "operationId": "archivePerson",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/person-identifier-param-schema"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Person archived successfully."
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema"
                }
              }
            }
          },
          "403": {
            "description": "The license is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/forbidden-schema"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource could not be found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/not-found-schema"
                }
              }
            }
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema"
                }
              }
            }
          }
        }
      }
    },
    "/people/v2/{id}/invite": {
      "post": {
        "tags": [
          "People"
        ],
        "summary": "Invite a person",
        "description": "This endpoint allows you to send an invitation email to Calamari.\n",
        "operationId": "invitePerson",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/person-identifier-param-schema"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Person invited successfully."
          },
          "401": {
            "description": "Authorization error - e.g. invalid server url, no Authorization header, wrong user / API key",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-401-schema"
                }
              }
            }
          },
          "403": {
            "description": "The license is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/forbidden-schema"
                }
              }
            }
          },
          "404": {
            "description": "The requested resource could not be found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/not-found-schema"
                }
              }
            }
          },
          "429": {
            "description": "Maximum number of requests was exceeded - either per second, hour or day.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-429-schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error - something went wrong!",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-500-schema"
                }
              }
            }
          },
          "504": {
            "description": "Gateway timeout - call to downstream service exceeded maximum configured amount of time",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PAG-504-schema"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AbsenceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Absence request ID"
          },
          "from": {
            "type": "string",
            "format": "date",
            "description": "Absence start date in ISO format",
            "example": "2017-02-20"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "Absence finish date in ISO format",
            "example": "2017-02-25"
          },
          "absenceTypeName": {
            "type": "string",
            "description": "Absence type name",
            "example": "Annual leave"
          },
          "absenceTypeId": {
            "type": "integer",
            "format": "int64",
            "description": "Absence type ID"
          },
          "absenceCategory": {
            "type": "string",
            "description": "Absence category. TIMEOFF - regular time off. WORK - when employee is working but is not in office (eg. 'Remote working day')",
            "enum": [
              "TIMEOFF",
              "WORK"
            ]
          },
          "status": {
            "type": "string",
            "description": "Absence request status",
            "enum": [
              "PENDING",
              "PENDING_CANCELLATION",
              "REJECTED",
              "ACCEPTED",
              "CANCELED",
              "REVOKED"
            ]
          },
          "entitlementAmount": {
            "type": "number",
            "format": "float",
            "description": "Entitlement amount"
          },
          "reason": {
            "type": "string",
            "description": "Reason for absence"
          },
          "amountFirstDay": {
            "type": "number",
            "format": "float",
            "description": "First day amount"
          },
          "amountLastDay": {
            "type": "number",
            "format": "float",
            "description": "Last day amount"
          },
          "entitlementAmountUnit": {
            "type": "string",
            "description": "Entitlement amount unit ",
            "enum": [
              "DAYS",
              "HOURS"
            ]
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of absence request creation"
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of absence request latest update"
          },
          "fullDayRequest": {
            "type": "boolean",
            "description": "Has the absence been requested for the whole day?"
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "description": "Local start date and start time of absence"
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "description": "Local end date and end time of absence"
          },
          "timeZone": {
            "type": "string",
            "description": "Absence reporter time zone",
            "example": "Europe/Warsaw"
          },
          "hasAttachments": {
            "type": "boolean",
            "description": "Absence has attachments",
            "example": true
          }
        },
        "required": [
          "absenceCategory",
          "absenceTypeId",
          "absenceTypeName",
          "amountFirstDay",
          "amountLastDay",
          "created",
          "endTime",
          "entitlementAmount",
          "entitlementAmountUnit",
          "from",
          "fullDayRequest",
          "hasAttachments",
          "id",
          "reason",
          "startTime",
          "status",
          "timeZone",
          "to",
          "updated"
        ]
      },
      "AbsenceDtoExtended": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Absence request ID"
          },
          "from": {
            "type": "string",
            "format": "date",
            "description": "Absence start date in ISO format",
            "example": "2017-02-20"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "Absence finish date in ISO format",
            "example": "2017-02-25"
          },
          "absenceTypeName": {
            "type": "string",
            "description": "Absence type name",
            "example": "Annual leave"
          },
          "absenceTypeId": {
            "type": "integer",
            "format": "int64",
            "description": "Absence type ID"
          },
          "absenceCategory": {
            "type": "string",
            "description": "Absence category. TIMEOFF - regular time off. WORK - when employee is working but is not in office (eg. 'Remote working day')",
            "enum": [
              "TIMEOFF",
              "WORK"
            ]
          },
          "status": {
            "type": "string",
            "description": "Absence request status",
            "enum": [
              "PENDING",
              "PENDING_CANCELLATION",
              "REJECTED",
              "ACCEPTED",
              "CANCELED",
              "REVOKED"
            ]
          },
          "entitlementAmount": {
            "type": "number",
            "format": "float",
            "description": "Entitlement amount"
          },
          "reason": {
            "type": "string",
            "description": "Reason for absence"
          },
          "amountFirstDay": {
            "type": "number",
            "format": "float",
            "description": "First day amount"
          },
          "amountLastDay": {
            "type": "number",
            "format": "float",
            "description": "Last day amount"
          },
          "entitlementAmountUnit": {
            "type": "string",
            "description": "Entitlement amount unit ",
            "enum": [
              "DAYS",
              "HOURS"
            ]
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of absence request creation"
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of absence request latest update"
          },
          "fullDayRequest": {
            "type": "boolean",
            "description": "Has the absence been requested for the whole day?"
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "description": "Local start date and start time of absence"
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "description": "Local end date and end time of absence"
          },
          "timeZone": {
            "type": "string",
            "description": "Absence reporter time zone",
            "example": "Europe/Warsaw"
          },
          "hasAttachments": {
            "type": "boolean",
            "description": "Absence has attachments",
            "example": true
          },
          "employeeEmail": {
            "type": "string",
            "description": "Employee email",
            "example": "john.white@mycompany.com"
          },
          "substituteEmail": {
            "type": "string",
            "description": "Substitute email. Has null value if employee does not have substitute",
            "example": "john.black@mycompany.com"
          }
        },
        "required": [
          "absenceCategory",
          "absenceTypeId",
          "absenceTypeName",
          "amountFirstDay",
          "amountLastDay",
          "created",
          "endTime",
          "entitlementAmount",
          "entitlementAmountUnit",
          "from",
          "fullDayRequest",
          "hasAttachments",
          "id",
          "reason",
          "startTime",
          "status",
          "timeZone",
          "to",
          "updated"
        ]
      },
      "AbsenceRequestId": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Absence request ID"
          }
        },
        "required": [
          "id"
        ]
      },
      "ArchiveProjectRequestIn": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "format": "int64",
            "description": "Project ID",
            "example": 13
          }
        },
        "required": [
          "projectId"
        ]
      },
      "BalanceEntryOut": {
        "type": "object",
        "properties": {
          "person": {
            "$ref": "#/components/schemas/EmployeeSimpleOut"
          },
          "balance": {
            "type": "integer",
            "format": "int64",
            "description": "Working time balance in seconds",
            "example": -3600
          }
        },
        "required": [
          "balance",
          "person"
        ]
      },
      "BalanceOut": {
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Duration unit",
            "enum": [
              "DAYS",
              "HOURS"
            ]
          },
          "unlimited": {
            "type": "boolean",
            "description": "Is entitlement balance unlimited?"
          },
          "amount": {
            "type": "integer",
            "format": "int32",
            "description": "Entitlement balance amount"
          }
        },
        "required": [
          "amount",
          "unit",
          "unlimited"
        ]
      },
      "BalanceOutExtended": {
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Duration unit",
            "enum": [
              "DAYS",
              "HOURS"
            ]
          },
          "unlimited": {
            "type": "boolean",
            "description": "Is entitlement balance unlimited?"
          },
          "amount": {
            "type": "integer",
            "format": "int32",
            "description": "Entitlement balance amount"
          }
        },
        "required": [
          "amount",
          "unit",
          "unlimited"
        ]
      },
      "BalanceOutWithAbsenceType": {
        "type": "object"
      },
      "BreakDto": {
        "type": "object",
        "description": "List of breaks",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when break was started."
          },
          "to": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when break was finished. Has null value if break was not finished"
          },
          "duration": {
            "type": "integer",
            "format": "int64",
            "description": "Duration of a break in seconds. Has null value if break was not finished.",
            "example": 28800
          },
          "breakType": {
            "$ref": "#/components/schemas/BreakTypeOut"
          }
        }
      },
      "BreakDtoIn": {
        "type": "object",
        "description": "Breaks",
        "properties": {
          "breakType": {
            "type": "integer",
            "format": "int64",
            "description": "ID break type",
            "example": 1
          },
          "breakStart": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of break start in ISO format"
          },
          "breakEnd": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of break end in ISO format"
          }
        },
        "required": [
          "breakEnd",
          "breakStart",
          "breakType"
        ]
      },
      "BreakIn": {
        "type": "object",
        "description": "Break method payload.",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "time": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of event occurence in ISO format."
          },
          "breakType": {
            "type": "integer",
            "format": "int64",
            "description": "ID break type",
            "example": 1
          }
        },
        "required": [
          "breakType",
          "person",
          "time"
        ]
      },
      "BreakOut": {
        "type": "object",
        "properties": {
          "person": {
            "$ref": "#/components/schemas/Person"
          },
          "breakStatus": {
            "type": "string",
            "description": "Employee break status after request",
            "enum": [
              "STARTED",
              "FINISHED"
            ]
          }
        },
        "required": [
          "breakStatus",
          "person"
        ]
      },
      "BreakTypeOut": {
        "type": "object",
        "description": "Break type.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Break id"
          },
          "name": {
            "type": "string",
            "description": "Break name",
            "example": "Primary break"
          }
        }
      },
      "Chronology": {
        "type": "object",
        "properties": {
          "zone": {
            "type": "string"
          }
        }
      },
      "Comment": {
        "type": "object",
        "description": "Absence request comment with content and creator",
        "properties": {
          "creator": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          },
          "content": {
            "type": "string",
            "description": "Comment content",
            "example": "Home office"
          },
          "absenceRequestId": {
            "type": "integer",
            "format": "int64",
            "description": "Absence request id",
            "example": 12
          }
        },
        "required": [
          "absenceRequestId",
          "content",
          "creator"
        ]
      },
      "CommentOut": {
        "type": "object",
        "properties": {
          "commentator": {
            "$ref": "#/components/schemas/EmployeeSimpleOut"
          },
          "content": {
            "type": "string",
            "description": "Comment content"
          },
          "absenceRequestId": {
            "type": "integer",
            "format": "int64",
            "description": "Absence request ID"
          }
        },
        "required": [
          "absenceRequestId",
          "commentator",
          "content"
        ]
      },
      "ContractTypeOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Contract type ID"
          },
          "name": {
            "type": "string",
            "description": "Contract type name",
            "example": "Contract name"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "CreateAbsenceRequestForParticularEmployee": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login. Absence request will be created for the chosen employee. Chosen employee will be also a creator of request.",
            "example": "john.white@mycompany.com"
          },
          "fromPart": {
            "type": "string",
            "description": "Time part value for absence start. Allowed values are based on minimal duration of absence request in absence type configuration.",
            "enum": [
              "MORNING",
              "AFTERNOON",
              "END_OF_DAY",
              "HH:mm"
            ],
            "example": "MORNING"
          },
          "toPart": {
            "type": "string",
            "description": "Time part value for absence end. Allowed values are based on minimal duration of absence request in absence type configuration.",
            "enum": [
              "MORNING",
              "AFTERNOON",
              "END_OF_DAY",
              "HH:mm"
            ],
            "example": "END_OF_DAY"
          },
          "absenceTypeId": {
            "type": "string",
            "description": "Absence type Id",
            "example": "PTO"
          },
          "reason": {
            "type": "string",
            "description": "Reason content",
            "example": "Home office",
            "maxLength": 1024,
            "minLength": 0
          },
          "substitute": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "comment": {
            "type": "string",
            "description": "Comment content",
            "example": "Home office",
            "maxLength": 1024,
            "minLength": 0
          },
          "dateFrom": {
            "type": "string",
            "format": "date"
          },
          "dateTo": {
            "type": "string",
            "format": "date"
          }
        },
        "required": [
          "absenceTypeId",
          "employee",
          "fromPart",
          "toPart"
        ]
      },
      "CreateBalanceIn": {
        "type": "object",
        "description": "Create entitlement balance.",
        "properties": {
          "amount": {
            "type": "string",
            "description": "Entitlement amount with precision 3",
            "example": "1.5"
          },
          "asOfDate": {
            "type": "string",
            "format": "date",
            "description": "Date in ISO format",
            "example": "2018-09-25"
          },
          "absenceType": {
            "type": "integer",
            "format": "int64",
            "description": "Absence type Id"
          },
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "comment": {
            "type": "string",
            "description": "Optional comment",
            "example": "Example comment"
          },
          "balanceOwner": {
            "type": "string"
          }
        },
        "required": [
          "absenceType",
          "amount",
          "asOfDate",
          "employee"
        ]
      },
      "CreateEmployeeOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id of create employee"
          }
        },
        "required": [
          "id"
        ]
      },
      "CreatePositionIn": {
        "type": "object",
        "properties": {
          "positionName": {
            "type": "string",
            "description": "Position name.",
            "example": "Manager",
            "maxLength": 2147483647,
            "minLength": 1
          },
          "members": {
            "type": "array",
            "description": "Ids of employees in the position.",
            "items": {
              "type": "integer",
              "format": "int64",
              "example": 123
            }
          }
        },
        "required": [
          "members",
          "positionName"
        ]
      },
      "CreatePositionOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the created position.",
            "example": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "CreateProjectRequestIn": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Project name",
            "example": "PROJECT-123",
            "maxLength": 255,
            "minLength": 0
          },
          "restrictedToPersons": {
            "type": "array",
            "description": "List of employees e-mails or logins. Example: [\"john.smith@domain.com\", \"mark.small@domain.com\"]",
            "items": {
              "type": "string",
              "example": "john.smith@domain.com"
            }
          },
          "restrictedToTeams": {
            "type": "array",
            "description": "List of teams names or ids. Example: [\"Developers Team\", \"17\"]",
            "items": {
              "type": "string",
              "example": "Developers Team"
            }
          }
        },
        "required": [
          "name"
        ]
      },
      "CreateTeamIn": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Team name.",
            "example": "Marketing",
            "maxLength": 2147483647,
            "minLength": 1
          },
          "members": {
            "type": "array",
            "description": "Identifiers of team members.",
            "items": {
              "type": "integer",
              "format": "int64",
              "example": 123
            }
          },
          "managers": {
            "type": "array",
            "description": "Identifiers of team managers.",
            "items": {
              "type": "integer",
              "format": "int64",
              "example": 456
            }
          }
        },
        "required": [
          "managers",
          "members",
          "name"
        ]
      },
      "CreateTeamOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the created team.",
            "example": 1
          }
        },
        "required": [
          "id"
        ]
      },
      "CreateTimesheetEntryIn": {
        "type": "object",
        "description": "Creating historical shift",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          },
          "shiftStart": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of shift start in ISO format"
          },
          "shiftEnd": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of shift end in ISO format"
          },
          "breaks": {
            "type": "array",
            "description": "List of breaks.",
            "items": {
              "$ref": "#/components/schemas/BreakDtoIn"
            }
          },
          "projects": {
            "type": "array",
            "description": "List of projects.",
            "items": {
              "$ref": "#/components/schemas/ProjectDtoIn"
            }
          },
          "description": {
            "type": "string",
            "description": "Shift description",
            "maxLength": 4096,
            "minLength": 0
          }
        },
        "required": [
          "person",
          "shiftEnd",
          "shiftStart"
        ]
      },
      "CurrentShiftStatus": {
        "type": "object",
        "properties": {
          "person": {
            "$ref": "#/components/schemas/EmployeeSimpleOut"
          },
          "status": {
            "type": "string",
            "description": "Current shift status.",
            "enum": [
              "STARTED",
              "STOPPED",
              "BREAK"
            ]
          }
        },
        "required": [
          "person",
          "status"
        ]
      },
      "DailyPresenceReport": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date of the daily report",
            "example": "2021-01-01"
          },
          "dailyPresenceReport": {
            "type": "array",
            "description": "Daily employees presence reports",
            "items": {
              "$ref": "#/components/schemas/EmployeePresenceStatus"
            }
          }
        },
        "required": [
          "dailyPresenceReport",
          "date"
        ]
      },
      "DateTimeField": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/DateTimeFieldType"
          },
          "supported": {
            "type": "boolean"
          },
          "lenient": {
            "type": "boolean"
          },
          "durationField": {
            "$ref": "#/components/schemas/DurationField"
          },
          "minimumValue": {
            "type": "integer",
            "format": "int32"
          },
          "maximumValue": {
            "type": "integer",
            "format": "int32"
          },
          "rangeDurationField": {
            "$ref": "#/components/schemas/DurationField"
          },
          "leapDurationField": {
            "$ref": "#/components/schemas/DurationField"
          }
        }
      },
      "DateTimeFieldType": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "rangeDurationType": {
            "$ref": "#/components/schemas/DurationFieldType"
          },
          "durationType": {
            "$ref": "#/components/schemas/DurationFieldType"
          }
        }
      },
      "DateTimeZone": {
        "type": "string"
      },
      "DeleteTimesheetEntryById": {
        "type": "object",
        "description": "Deleting timesheet entry by id",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "id"
        ]
      },
      "DurationField": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/DurationFieldType"
          },
          "supported": {
            "type": "boolean"
          },
          "precise": {
            "type": "boolean"
          },
          "unitMillis": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "DurationFieldType": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "EditProjectRequestIn": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "format": "int64",
            "description": "Project ID",
            "example": 13
          },
          "name": {
            "type": "string",
            "description": "Project name",
            "example": "PROJECT-123",
            "maxLength": 255,
            "minLength": 0
          },
          "restrictedToPersons": {
            "type": "array",
            "description": "List of employees e-mails or logins.",
            "items": {
              "type": "string",
              "example": "john.smith@domain.com"
            }
          },
          "restrictedToTeams": {
            "type": "array",
            "description": "List of teams names or ids.",
            "items": {
              "type": "string",
              "example": "Developers Team"
            }
          }
        },
        "required": [
          "projectId"
        ]
      },
      "EditTimesheetEntryIn": {
        "type": "object",
        "description": "Updating historical shift",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          },
          "shiftStart": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of shift start in ISO format"
          },
          "shiftEnd": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of shift end in ISO format"
          },
          "breaks": {
            "type": "array",
            "description": "List of breaks.",
            "items": {
              "$ref": "#/components/schemas/BreakDtoIn"
            }
          },
          "projects": {
            "type": "array",
            "description": "List of projects.",
            "items": {
              "$ref": "#/components/schemas/ProjectDtoIn"
            }
          },
          "description": {
            "type": "string",
            "description": "Shift description",
            "maxLength": 4096,
            "minLength": 0
          },
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "person",
          "shiftEnd",
          "shiftStart"
        ]
      },
      "EmployeeBalanceOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "writeOnly": true
          },
          "email": {
            "type": "string",
            "writeOnly": true
          },
          "balance": {
            "$ref": "#/components/schemas/BalanceOutExtended"
          }
        }
      },
      "EmployeeFullOut": {
        "type": "object",
        "description": "List of employees",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Employee id number"
          },
          "firstName": {
            "type": "string",
            "description": "Employee first name",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Employee last name",
            "example": "Smith"
          },
          "email": {
            "type": "string",
            "description": "Employee email",
            "example": "john.smith@domain.com"
          },
          "externalNumber": {
            "type": "string",
            "description": "External employee number",
            "example": "AYU23"
          },
          "workingWeek": {
            "$ref": "#/components/schemas/SimpleWorkingWeek"
          },
          "approvalFlow": {
            "$ref": "#/components/schemas/SimpleAcceptanceFlow"
          },
          "position": {
            "$ref": "#/components/schemas/SimplePosition"
          },
          "teams": {
            "type": "array",
            "description": "Teams",
            "items": {
              "$ref": "#/components/schemas/SimpleTeam"
            }
          },
          "admin": {
            "type": "boolean",
            "description": "Is the employee is an admin?"
          },
          "contractType": {
            "$ref": "#/components/schemas/SimpleContractType"
          },
          "language": {
            "type": "string",
            "description": "Employee language",
            "example": "EN"
          },
          "timezone": {
            "type": "string",
            "description": "Employee timezone",
            "example": "Europe/Warsaw"
          },
          "directManager": {
            "$ref": "#/components/schemas/SimpleEmployee"
          },
          "birthDate": {
            "type": "string",
            "format": "date",
            "description": "Birth date",
            "example": "2017-02-20"
          },
          "hireDate": {
            "type": "string",
            "format": "date",
            "description": "Hire date",
            "example": "2017-02-20"
          },
          "businessPhone": {
            "type": "string",
            "description": "Business phone",
            "example": "827032162"
          },
          "homePhone": {
            "type": "string",
            "description": "Home phone",
            "example": "826021237"
          },
          "personalEmail": {
            "type": "string",
            "description": "Personal email",
            "example": "john.smith@personalDomain.com"
          },
          "addressStreet": {
            "type": "string",
            "description": "Address street",
            "example": "Small Street"
          },
          "addressNumber": {
            "type": "string",
            "description": "Address building/flat number",
            "example": "2/12"
          },
          "addressCity": {
            "type": "string",
            "description": "Address city",
            "example": "Warsaw"
          },
          "addressPostalCode": {
            "type": "string",
            "description": "Address postal code",
            "example": "15-322"
          },
          "addressProvinceState": {
            "type": "string",
            "description": "Address province/state.",
            "example": "Main province"
          },
          "addressCountry": {
            "type": "string",
            "description": "Address country",
            "example": "Poland"
          },
          "emergencyContactName": {
            "type": "string",
            "description": "Emergency contact name",
            "example": "Contact name"
          },
          "emergencyContactRelationship": {
            "type": "string",
            "description": "Emergency contact relationship",
            "example": "Contact relationship"
          },
          "emergencyContactPhone": {
            "type": "string",
            "description": "Emergency contact phone",
            "example": "820321876"
          },
          "holidaysCalendar": {
            "$ref": "#/components/schemas/GetHolidayCalendarOut"
          },
          "maritalStatus": {
            "type": "string",
            "description": "Martial status",
            "enum": [
              "SINGLE",
              "MARRIED",
              "WIDOWED",
              "SEPARATED",
              "DIVORCED",
              "DOMESTIC_PARTNERSHIP",
              "COMMON_LAW",
              "OTHER",
              "NOT_SET"
            ]
          },
          "probationEndDate": {
            "type": "string",
            "format": "date",
            "description": "Probation end date",
            "example": "2017-02-20"
          },
          "plannedFiring": {
            "type": "string",
            "format": "date",
            "description": "Planned firing",
            "example": "2017-02-20"
          },
          "seniorityBeforeHireYears": {
            "type": "integer",
            "format": "int32",
            "description": "Seniority before hire - years"
          },
          "seniorityBeforeHireMonths": {
            "type": "integer",
            "format": "int32",
            "description": "Seniority before hire - months"
          },
          "childrenCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of children"
          },
          "youngestChildBirthDate": {
            "type": "string",
            "format": "date",
            "description": "The youngest child birth date",
            "example": "2017-02-20"
          },
          "customNote": {
            "type": "string",
            "description": "Custom note",
            "example": "Optional custom note"
          },
          "sex": {
            "type": "string",
            "description": "Sex",
            "enum": [
              "MALE",
              "FEMALE",
              "OTHER",
              "NOT_SET"
            ]
          },
          "archived": {
            "type": "boolean",
            "description": "Is employee archived?"
          }
        },
        "required": [
          "addressCity",
          "addressCountry",
          "addressNumber",
          "addressPostalCode",
          "addressProvinceState",
          "addressStreet",
          "admin",
          "approvalFlow",
          "archived",
          "birthDate",
          "businessPhone",
          "childrenCount",
          "contractType",
          "customNote",
          "directManager",
          "email",
          "emergencyContactName",
          "emergencyContactPhone",
          "emergencyContactRelationship",
          "externalNumber",
          "firstName",
          "hireDate",
          "holidaysCalendar",
          "homePhone",
          "id",
          "language",
          "lastName",
          "maritalStatus",
          "personalEmail",
          "plannedFiring",
          "position",
          "probationEndDate",
          "seniorityBeforeHireMonths",
          "seniorityBeforeHireYears",
          "sex",
          "teams",
          "timezone",
          "workingWeek",
          "youngestChildBirthDate"
        ]
      },
      "EmployeePresenceStatus": {
        "type": "object",
        "description": "Daily employees presence reports",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee full name",
            "example": "John White"
          },
          "status": {
            "type": "string",
            "description": "Employee presence status",
            "example": "PTO"
          },
          "email": {
            "type": "string",
            "description": "Employee email",
            "example": "john.smith@domain.com"
          }
        },
        "required": [
          "email",
          "employee",
          "status"
        ]
      },
      "EmployeeSimpleOut": {
        "type": "object",
        "description": "Employee",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Employee first name",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Employee last name",
            "example": "Williams"
          },
          "email": {
            "type": "string",
            "description": "Employee email",
            "example": "john.williams@domain.com"
          },
          "externalId": {
            "type": "string",
            "description": "Employee external identifier",
            "example": "A12Y"
          }
        },
        "required": [
          "email",
          "firstName",
          "lastName"
        ]
      },
      "EmployeesOut": {
        "type": "object",
        "properties": {
          "employees": {
            "type": "array",
            "description": "List of employees",
            "items": {
              "$ref": "#/components/schemas/EmployeeFullOut"
            }
          },
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total pages"
          }
        },
        "required": [
          "currentPage",
          "employees",
          "totalPages"
        ]
      },
      "ErrorResponse": {
        "type": "object",
        "description": "Error response.",
        "properties": {
          "message": {
            "type": "string",
            "description": "Human readable error explanation.",
            "example": "Api error"
          },
          "code": {
            "type": "string",
            "description": "Error code.",
            "example": "INVALID_JSON_PAYLOAD"
          },
          "field": {
            "type": "string",
            "description": "Which field of payload object caused error. NULL when error is not related to particular field",
            "example": "field"
          }
        }
      },
      "FilterBalanceEntriesIn": {
        "type": "object",
        "description": "Searching working time balances advanced filter.",
        "properties": {
          "from": {
            "type": "string",
            "format": "date",
            "description": "Start date of dates range to search request in ISO format",
            "example": "2020-01-10"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "End date of dates range to search request in ISO format",
            "example": "2020-01-15"
          },
          "teams": {
            "type": "array",
            "description": "List of teams names or identifiers to search. As a result there will be absence requests of employees who are members of at least one of provided teams. Example: [\"First Team\", \"Second Team\", \"Third Team\"]",
            "items": {
              "type": "string",
              "example": "First Team"
            }
          },
          "positions": {
            "type": "array",
            "description": "List of positions names or identifiers to search. As a result there will be absence requests of employees who have one of provided positions. Example: [\"Developer\", \"Support\", \"Architect\"]",
            "items": {
              "type": "string",
              "example": "Developer"
            }
          },
          "contractTypes": {
            "type": "array",
            "description": "List of contract types names or identifiers to search. As a result there will be absence requests of employees who have one of contract type. Example: [\"firstContract\", \"secondContract\"]",
            "items": {
              "type": "string",
              "example": "Employment Contract"
            }
          },
          "employees": {
            "type": "array",
            "description": "List of employees e-mails or logins. Example: [\"john.smith@domain.com\", \"mark.small@domain.com\"]",
            "items": {
              "type": "string",
              "example": "john.smith@domain.com"
            }
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "FilterTimesheetEntriesIn": {
        "type": "object",
        "description": "Searching timesheet entries.",
        "properties": {
          "from": {
            "type": "string",
            "format": "date",
            "description": "Start date of dates range to search timesheet entries in ISO format",
            "example": "2018-10-01"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "End date of dates range to search timesheet entries in ISO format",
            "example": "2018-10-01"
          },
          "teams": {
            "type": "array",
            "description": "List of teams names or identifiers to search. As a result there will be timesheet entries of employees who are members of at least one of provided teams. Example: [\"First Team\", \"Second Team\"]",
            "items": {
              "type": "string",
              "example": "First Team"
            }
          },
          "positions": {
            "type": "array",
            "description": "List of positions names or identifiers to search. As a result there will be timesheet entries of employees who have one of provided positions. Example: [\"Developer\", \"Support\"]",
            "items": {
              "type": "string",
              "example": "Developer"
            }
          },
          "contractTypes": {
            "type": "array",
            "description": "List of contract types names or identifiers to search. As a result there will be timesheet entries of employees who have one of contract type. Example: [\"Full Time\"]",
            "items": {
              "type": "string",
              "example": "Full Time"
            }
          },
          "employees": {
            "type": "array",
            "description": "List of employees e-mails or logins. Example: [\"john.white@domain.com\", \"mark.smith@domain.com\"]",
            "items": {
              "type": "string",
              "example": "john.white@domain.com"
            }
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "FindAbsencesAdvancedIn": {
        "type": "object",
        "description": "Searching absence requests advanced filter.",
        "properties": {
          "from": {
            "type": "string",
            "format": "date",
            "description": "Start date of dates range to search request in ISO format",
            "example": "2017-01-10"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "End date of dates range to search request in ISO format",
            "example": "2017-01-15"
          },
          "absenceTypes": {
            "type": "array",
            "description": "List of absence types names or identifiers to search. Example: [\"Annual Leave\", \"Remote Work\", \"Sick Leave\"]",
            "items": {
              "type": "string",
              "example": "Annual Leave"
            }
          },
          "teams": {
            "type": "array",
            "description": "List of teams names or identifiers to search. As a result there will be absence requests of employees who are members of at least one of provided teams. Example: [\"First Team\", \"Second Team\", \"Third Team\"]",
            "items": {
              "type": "string",
              "example": "First Team"
            }
          },
          "positions": {
            "type": "array",
            "description": "List of positions names or identifiers to search. As a result there will be absence requests of employees who have one of provided positions. Example: [\"Developer\", \"Support\", \"Architect\"]",
            "items": {
              "type": "string",
              "example": "Developer"
            }
          },
          "contractTypes": {
            "type": "array",
            "description": "List of contract types names or identifiers to search. As a result there will be absence requests of employees who have one of contract type. Example: [\"firstContract\", \"secondContract\"]",
            "items": {
              "type": "string",
              "example": "firstContract"
            }
          },
          "employees": {
            "type": "array",
            "description": "List of employees e-mails or logins. Example: [\"john.smith@domain.com\", \"mark.small@domain.com\"]",
            "items": {
              "type": "string",
              "example": "john.smith@domain.com"
            }
          },
          "createdFrom": {
            "type": "string",
            "format": "date-time",
            "description": "Filter absence requests by date of creation. As a result there will be absence requests created at the provided moment or later. Please provide the date and time in ISO 8601 format with time zone. ",
            "example": "2017-01-23T08:00:00+01:00"
          },
          "createdTo": {
            "type": "string",
            "format": "date-time",
            "description": "Filter absence requests by date of creation. As a result there will be absence requests created before the provided moment. Please provide the date and time in ISO 8601 format with time zone.",
            "example": "2017-01-24T00:00:00+01:00"
          },
          "updatedFrom": {
            "type": "string",
            "format": "date-time",
            "description": "Filter absence requests by date of last update. As a result there will be absence requests updated at the provided moment or later. Please provide the date and time in ISO 8601 format with time zone.",
            "example": "2017-01-23T08:00:00+01:00"
          },
          "updatedTo": {
            "type": "string",
            "format": "date-time",
            "description": "Filter absence requests by date of last update. As a result there will be absence requests updated before the provided moment. Please provide the date and time in ISO 8601 format with time zone.",
            "example": "2017-01-24T00:00:00+01:00"
          },
          "absenceStatuses": {
            "type": "array",
            "description": "Filter absence requests by absence statuses. As a result there will be absence requests with chosen statuses. By default return all absence requests. Allowed values: [\"PENDING\", \"PENDING_CANCELLATION\", \"REJECTED\", \"APPROVED\", \"CANCELED\", \"REVOKED\"]",
            "items": {
              "type": "string",
              "example": "PENDING"
            }
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "FindAbsencesInRangeIn": {
        "type": "object",
        "description": "Searching absence requests filter.",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "from": {
            "type": "string",
            "format": "date",
            "description": "Start date of dates range to search request in ISO format",
            "example": "2017-01-10"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "End date of dates range to search request in ISO format",
            "example": "2017-01-15"
          }
        },
        "required": [
          "employee",
          "from",
          "to"
        ]
      },
      "FindHolidaysInRangeIn": {
        "type": "object",
        "description": "Searching public holidays for employee filter.",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "from": {
            "type": "string",
            "format": "date",
            "description": "Start date of dates range to search in ISO format",
            "example": "2017-01-10"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "End date of dates range to search in ISO format",
            "example": "2017-01-15"
          }
        },
        "required": [
          "employee",
          "from",
          "to"
        ]
      },
      "GetAbsenceTypeOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Absence type ID"
          },
          "name": {
            "type": "string",
            "description": "Absence type name",
            "example": "Annual Leave"
          },
          "durationUnit": {
            "type": "string",
            "description": "Entitlement amount unit",
            "enum": [
              "DAYS",
              "HOURS"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "Absence type external ID",
            "example": "P001"
          }
        },
        "required": [
          "durationUnit",
          "id",
          "name"
        ]
      },
      "GetBalanceOfEmployee": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Date in ISO format",
            "example": "2018-09-25"
          }
        },
        "required": [
          "date",
          "employee"
        ]
      },
      "GetBalanceOfEmployeeAndAbsenceType": {
        "type": "object",
        "properties": {
          "absenceTypeId": {
            "type": "string",
            "description": "Absence type Id",
            "example": "PTO"
          },
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Date in ISO format",
            "example": "2018-09-25"
          }
        },
        "required": [
          "absenceTypeId",
          "date",
          "employee"
        ]
      },
      "GetBreakTypeOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Break type id"
          },
          "name": {
            "type": "string",
            "description": "Break type name",
            "example": "Break name"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "GetEmployeesBalancesIn": {
        "type": "object",
        "properties": {
          "absenceTypeId": {
            "type": "string",
            "description": "Absence type Id",
            "example": "PTO"
          },
          "teams": {
            "type": "array",
            "description": "List of teams names or identifiers to search. As a result there will be balances of employees who are members of at least one of provided teams. Example: [\"First Team\", \"Second Team\", \"Third Team\"]",
            "items": {
              "type": "string",
              "example": "First Team"
            }
          },
          "positions": {
            "type": "array",
            "description": "List of positions names or identifiers to search. As a result there will be balances of employees who have one of provided positions. Example: [\"Developer\", \"Support\", \"Architect\"]",
            "items": {
              "type": "string",
              "example": "Developer"
            }
          },
          "contractTypes": {
            "type": "array",
            "description": "List of contract types names or identifiers to search. As a result there will be balances of employees who have one of contract type. Example: [\"firstContract\", \"secondContract\"]",
            "items": {
              "type": "string",
              "example": "Employment Contract"
            }
          },
          "employees": {
            "type": "array",
            "description": "List of employees e-mails or logins. Example: [\"john.smith@domain.com\", \"mark.small@domain.com\"]",
            "items": {
              "type": "string",
              "example": "john.smith@domain.com"
            }
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Date in ISO format",
            "example": "2018-09-25"
          }
        },
        "required": [
          "absenceTypeId",
          "date"
        ]
      },
      "GetHolidayCalendarOut": {
        "type": "object",
        "description": "Emergency contact name",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Holiday calendar id"
          },
          "name": {
            "type": "string",
            "description": "Holiday calendar name",
            "example": "Primary calendar"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "GetPresenceReportRequest": {
        "type": "object",
        "properties": {
          "dateFrom": {
            "type": "string",
            "format": "date",
            "description": "Start date of dates range to generate presence report in ISO format",
            "example": "2017-01-10"
          },
          "dateTo": {
            "type": "string",
            "format": "date",
            "description": "End date of dates range to  generate presence report in ISO format",
            "example": "2017-01-15"
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Number of result page",
            "example": 0,
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results returned in one request",
            "example": 100,
            "maximum": 100,
            "minimum": 1
          }
        },
        "required": [
          "dateFrom",
          "dateTo",
          "limit",
          "page"
        ]
      },
      "HolidayOut": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Public holiday name",
            "example": "Holiday name"
          },
          "start": {
            "type": "string",
            "format": "date",
            "description": "First day of the holiday",
            "example": "2017-02-20"
          },
          "end": {
            "type": "string",
            "format": "date",
            "description": "Last day of the holiday",
            "example": "2017-02-20"
          },
          "halfDay": {
            "type": "boolean",
            "description": "Half day holiday"
          },
          "halfdayPeriod": {
            "type": "string",
            "description": "If halfDay is true halfdayPeriod tells which part of day is non-working",
            "enum": [
              "AM",
              "PM"
            ]
          }
        },
        "required": [
          "end",
          "halfDay",
          "halfdayPeriod",
          "name",
          "start"
        ]
      },
      "InvitationEmployeeIn": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          }
        },
        "required": [
          "employee"
        ]
      },
      "LocalTime": {
        "type": "string",
        "format": "time",
        "description": "Finish of working time. Pattern: HH:mm:ss.SSS. Has null value when specified day is not working day.",
        "example": "13:00:00.000"
      },
      "ModifyBalanceOut": {
        "type": "object",
        "properties": {
          "result": {
            "type": "string",
            "description": "Result of modify entitlement",
            "enum": [
              "ENTITLEMENT_MODIFIED"
            ]
          }
        },
        "required": [
          "result"
        ]
      },
      "Person": {
        "type": "object",
        "description": "Employee description",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Employee first name",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Employee first name",
            "example": "White"
          }
        },
        "required": [
          "firstName",
          "lastName"
        ]
      },
      "PersonForBreakTypes": {
        "type": "object",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          }
        },
        "required": [
          "person"
        ]
      },
      "PersonForProjects": {
        "type": "object",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          }
        },
        "required": [
          "person"
        ]
      },
      "PositionDto": {
        "type": "object",
        "description": "Position",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Position id"
          },
          "name": {
            "type": "string",
            "description": "Position name",
            "example": "Manager"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "ProjectDto": {
        "type": "object",
        "description": "List of projects",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when employee started working on project"
          },
          "to": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when employee finished working on project. Has null value if work on project was not finished"
          },
          "duration": {
            "type": "integer",
            "format": "int64",
            "description": "Duration of time spent on a project in seconds. Has null value if work on project was not finished",
            "example": 28800
          },
          "project": {
            "$ref": "#/components/schemas/ProjectOut"
          }
        }
      },
      "ProjectDtoIn": {
        "type": "object",
        "description": "Projects",
        "properties": {
          "projectType": {
            "type": "integer",
            "format": "int64",
            "description": "ID project type",
            "example": 1
          },
          "projectStart": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of project worklog start in ISO format"
          },
          "projectEnd": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of project worklog end in ISO format"
          }
        },
        "required": [
          "projectEnd",
          "projectStart",
          "projectType"
        ]
      },
      "ProjectOut": {
        "type": "object",
        "description": "Project properties",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project id"
          },
          "name": {
            "type": "string",
            "description": "Project name",
            "example": "Primary project"
          }
        }
      },
      "ProjectOutWithAssignedEmployeesTeams": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project id"
          },
          "name": {
            "type": "string",
            "description": "Project name",
            "example": "Primary project"
          },
          "employees": {
            "type": "array",
            "description": "Assigned employees",
            "items": {
              "$ref": "#/components/schemas/EmployeeSimpleOut"
            }
          },
          "teams": {
            "type": "array",
            "description": "Assigned teams",
            "items": {
              "$ref": "#/components/schemas/TeamOut"
            }
          }
        }
      },
      "PublicArchiveEmployeeIn": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          }
        },
        "required": [
          "employee"
        ]
      },
      "PublicCreateEmployeeIn": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Employee first name",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Employee last name",
            "example": "Williams"
          },
          "email": {
            "type": "string",
            "description": "Employee email",
            "example": "john.white@mycompany.com"
          },
          "workingWeek": {
            "type": "string",
            "description": "Working week name or identifier",
            "example": "Working week name"
          },
          "approvalFlow": {
            "type": "string",
            "description": "Approval flow name or identifier",
            "example": "Flow name"
          },
          "position": {
            "type": "string",
            "description": "Position name or identifier.",
            "example": "Developer"
          },
          "teams": {
            "type": "array",
            "description": "List of teams names or identifiers. Example: [Developers Team]",
            "items": {
              "type": "string",
              "example": "Developers Team"
            }
          },
          "holidaysCalendar": {
            "type": "string",
            "description": "Holidays calendar name or identifier",
            "example": "Primary calendar"
          },
          "sex": {
            "type": "string",
            "description": "Sex",
            "enum": [
              "MALE",
              "FEMALE",
              "OTHER",
              "NOT_SET"
            ]
          },
          "maritalStatus": {
            "type": "string",
            "description": "Martial status",
            "enum": [
              "SINGLE",
              "MARRIED",
              "WIDOWED",
              "SEPARATED",
              "DIVORCED",
              "DOMESTIC_PARTNERSHIP",
              "COMMON_LAW",
              "OTHER",
              "NOT_SET"
            ]
          },
          "admin": {
            "type": "boolean",
            "description": "Is the employee is an admin?"
          },
          "contractType": {
            "type": "string",
            "description": "Contract type name or identifier",
            "example": "Contract type"
          },
          "externalNumber": {
            "type": "string",
            "description": "External number",
            "example": "A12Y"
          },
          "directManager": {
            "type": "string",
            "description": "Direct manager e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "birthDate": {
            "type": "string",
            "format": "date",
            "description": "Birth date in ISO format",
            "example": "2017-02-20"
          },
          "hireDate": {
            "type": "string",
            "format": "date",
            "description": "Hire date in ISO format",
            "example": "2017-02-20"
          },
          "businessPhone": {
            "type": "string",
            "description": "Business phone",
            "example": "876234928"
          },
          "homePhone": {
            "type": "string",
            "description": "Home phone",
            "example": "283018271"
          },
          "personalEmail": {
            "type": "string",
            "description": "Personal email",
            "example": "john.white@mycompany.com"
          },
          "addressStreet": {
            "type": "string",
            "description": "Address street",
            "example": "Buckfast Street"
          },
          "addressNumber": {
            "type": "string",
            "description": "Address building/flat number",
            "example": "2/20"
          },
          "addressCity": {
            "type": "string",
            "description": "Address city",
            "example": "Warsaw"
          },
          "addressPostalCode": {
            "type": "string",
            "description": "Address postal code",
            "example": "12-333"
          },
          "addressProvinceState": {
            "type": "string",
            "description": "Address province/state",
            "example": "Main Province"
          },
          "addressCountry": {
            "type": "string",
            "description": "Address country",
            "example": "Poland"
          },
          "emergencyContactName": {
            "type": "string",
            "description": "Emergency contact name",
            "example": "Contact name"
          },
          "emergencyContactRelationship": {
            "type": "string",
            "description": "Emergency contact relationship",
            "example": "Contact relationship"
          },
          "emergencyContactPhone": {
            "type": "string",
            "description": "Emergency contact phone",
            "example": "198263098"
          },
          "probationEndDate": {
            "type": "string",
            "format": "date",
            "description": "Probation end date in ISO format",
            "example": "2017-02-20"
          },
          "plannedFiring": {
            "type": "string",
            "format": "date",
            "description": "Planned firing in ISO format",
            "example": "2017-02-20"
          },
          "seniorityBeforeHireYears": {
            "type": "integer",
            "format": "int32",
            "description": "Seniority before hire - years"
          },
          "seniorityBeforeHireMonths": {
            "type": "integer",
            "format": "int32",
            "description": "Seniority before hire - months"
          },
          "childrenCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of children"
          },
          "youngestChildBirthDate": {
            "type": "string",
            "format": "date",
            "description": "The youngest child birth date in ISO format",
            "example": "2017-02-20"
          },
          "customNote": {
            "type": "string",
            "description": "Custom note",
            "example": "Optional custom note about employee"
          }
        },
        "required": [
          "admin",
          "approvalFlow",
          "email",
          "firstName",
          "holidaysCalendar",
          "lastName",
          "maritalStatus",
          "sex",
          "workingWeek"
        ]
      },
      "PublicEditEmployeeIn": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee e-mail or login",
            "example": "john.white@mycompany.com"
          },
          "firstName": {
            "type": "string",
            "description": "Employee first name to update.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Employee last name to update.",
            "example": "Williams"
          },
          "email": {
            "type": "string",
            "description": "Employee email to update.",
            "example": "john.williams@domain.com"
          },
          "workingWeek": {
            "type": "string",
            "description": "Working week name or identifier to update.",
            "example": "Working week name"
          },
          "approvalFlow": {
            "type": "string",
            "description": "Approval flow name or identifier to update.",
            "example": "Main Approval Flow"
          },
          "position": {
            "type": "string",
            "description": "Position name or identifier to update.",
            "example": "Developer"
          },
          "teams": {
            "type": "array",
            "description": "List of teams names or identifiers to update.",
            "items": {
              "type": "string",
              "example": "Primary team"
            }
          },
          "holidaysCalendar": {
            "type": "string",
            "description": "Holidays calendar name or identifier to update.",
            "example": "Primary calendar"
          },
          "sex": {
            "type": "string",
            "description": "Sex"
          },
          "maritalStatus": {
            "type": "string",
            "description": "Marital status to update"
          },
          "admin": {
            "type": "boolean",
            "description": "Is the employee is an admin?"
          },
          "contractType": {
            "type": "string",
            "description": "Contract type name or identifier.",
            "example": "Full time"
          },
          "externalNumber": {
            "type": "string",
            "description": "External number.",
            "example": "A27D"
          },
          "directManager": {
            "type": "string",
            "description": "Direct manager e-mail or login.",
            "example": "mark.smith@domain.com"
          },
          "birthDate": {
            "type": "string",
            "description": "Birth date to update in ISO format",
            "example": "2017-02-20"
          },
          "hireDate": {
            "type": "string",
            "description": "Hire date to update in ISO format",
            "example": "2017-02-20"
          },
          "businessPhone": {
            "type": "string",
            "description": "Business phone to update.",
            "example": "982027621"
          },
          "homePhone": {
            "type": "string",
            "description": "Home phone to update.",
            "example": "982027621"
          },
          "personalEmail": {
            "type": "string",
            "description": "Personal email to update. Example: ",
            "example": "john.white@mycompany.com"
          },
          "addressStreet": {
            "type": "string",
            "description": "Address street to update",
            "example": "New Street"
          },
          "addressNumber": {
            "type": "string",
            "description": "Address building/flat number to update",
            "example": "2/12"
          },
          "addressCity": {
            "type": "string",
            "description": "Address city to update",
            "example": "Warsaw"
          },
          "addressPostalCode": {
            "type": "string",
            "description": "Address postal code to update",
            "example": "28-283"
          },
          "addressProvinceState": {
            "type": "string",
            "description": "Address province/state to update",
            "example": "Main province"
          },
          "addressCountry": {
            "type": "string",
            "description": "Address country to update",
            "example": "Poland"
          },
          "emergencyContactName": {
            "type": "string",
            "description": "Emergency contact name to update",
            "example": "Contact name"
          },
          "emergencyContactRelationship": {
            "type": "string",
            "description": "Emergency contact relationship to update",
            "example": "Contact relationship"
          },
          "emergencyContactPhone": {
            "type": "string",
            "description": "Emergency contact phone to update",
            "example": "928196340"
          },
          "probationEndDate": {
            "type": "string",
            "description": "Probation end date to update in ISO format",
            "example": "2017-02-20"
          },
          "plannedFiring": {
            "type": "string",
            "description": "Planned firing to update in ISO format",
            "example": "2017-02-20"
          },
          "seniorityBeforeHireYears": {
            "type": "integer",
            "format": "int32",
            "description": "Seniority before hire to update- years"
          },
          "seniorityBeforeHireMonths": {
            "type": "integer",
            "format": "int32",
            "description": "Seniority before hire to update- months"
          },
          "childrenCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of children to update"
          },
          "youngestChildBirthDate": {
            "type": "string",
            "description": "The youngest child birth date to update in ISO format",
            "example": "2017-02-20"
          },
          "customNote": {
            "type": "string",
            "description": "Custom note to update",
            "example": "Custom note about employee"
          }
        },
        "required": [
          "employee"
        ]
      },
      "PublicEmployeesIn": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Page number",
            "example": 0
          }
        }
      },
      "PublicSearchEmployeesIn": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          },
          "contractTypes": {
            "type": "array",
            "description": "List of contract types names or identifiers to search. As a result there will be employees who have one of selected contract types assigned. Example: [\"Employment Contract\", \"B2B\"]",
            "items": {
              "type": "string",
              "example": "Employment Contract"
            }
          },
          "positions": {
            "type": "array",
            "description": "List of positions names or identifiers to search. As a result there will be employees who have one of provided positions. Example: [\"Developer\", \"Support\", \"Architect\"]",
            "items": {
              "type": "string",
              "example": "Developer"
            }
          },
          "teams": {
            "type": "array",
            "description": "List of teams names or identifiers to search. As a result the result will contain employees who are members of at least one of provided teams. Example: [\"First Team\", \"Second Team\", \"Third Team\"]",
            "items": {
              "type": "string",
              "example": "First Team"
            }
          },
          "withArchived": {
            "type": "boolean",
            "description": "Should return also archived employees?"
          }
        }
      },
      "PunchClockIn": {
        "type": "object",
        "description": "Punch clock in method payload.",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          },
          "time": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of event occurence in ISO format."
          },
          "projectId": {
            "type": "integer",
            "format": "int64",
            "description": "Project id.",
            "example": 1
          },
          "description": {
            "type": "string",
            "description": "Description",
            "example": "Example description"
          }
        },
        "required": [
          "person",
          "time"
        ]
      },
      "PunchClockOut": {
        "type": "object",
        "description": "Punch clock out method payload.",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          },
          "time": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of event occurence in ISO format."
          }
        },
        "required": [
          "person",
          "time"
        ]
      },
      "PunchOut": {
        "type": "object",
        "properties": {
          "person": {
            "$ref": "#/components/schemas/Person"
          },
          "shiftStatus": {
            "type": "string",
            "description": "Employee shift status after request",
            "enum": [
              "STARTED",
              "FINISHED"
            ]
          }
        },
        "required": [
          "person",
          "shiftStatus"
        ]
      },
      "ShiftStatusRequest": {
        "type": "object",
        "properties": {
          "person": {
            "type": "string",
            "description": "Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)",
            "example": "john.white@mycompany.com"
          }
        },
        "required": [
          "person"
        ]
      },
      "SimpleAcceptanceFlow": {
        "type": "object",
        "description": "Approval flow",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Approval flow id"
          },
          "name": {
            "type": "string",
            "description": "Approval flow name",
            "example": "Default Approval Flow"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "SimpleContractType": {
        "type": "object",
        "description": "Contract type",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Contract type id"
          },
          "name": {
            "type": "string",
            "description": "Contract type name",
            "example": "Contract type"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "SimpleEmployee": {
        "type": "object",
        "description": "Employee direct manager",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Employee id"
          },
          "email": {
            "type": "string",
            "description": "Employee email",
            "example": "john.white@domain.com"
          }
        },
        "required": [
          "email",
          "id"
        ]
      },
      "SimplePosition": {
        "type": "object",
        "description": "Position",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Position id"
          },
          "name": {
            "type": "string",
            "description": "Position name",
            "example": "Developer"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "SimpleTeam": {
        "type": "object",
        "description": "Teams",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Team id"
          },
          "name": {
            "type": "string",
            "description": "Team name",
            "example": "Main Team"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "SimpleWorkingWeek": {
        "type": "object",
        "description": "Working week",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Working week id"
          },
          "name": {
            "type": "string",
            "description": "Working week name",
            "example": "Full time"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "TeamIdRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Team ID"
          }
        },
        "required": [
          "id"
        ]
      },
      "TeamOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Team ID"
          },
          "name": {
            "type": "string",
            "description": "Team name",
            "example": "Primary team"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "TimesheetEntryOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Timesheet entry ID"
          },
          "started": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of timesheet entry started"
          },
          "finished": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of timesheet entry finished. Has null value if employee does not clock out"
          },
          "startedTimeZone": {
            "type": "string",
            "description": "Started work timzeone",
            "example": "Europe/Warsaw"
          },
          "finishedTimeZone": {
            "type": "string",
            "description": "Finished work timezone. Has null value if employee does not clock out",
            "example": "Europe/Warsaw"
          },
          "duration": {
            "type": "integer",
            "format": "int64",
            "description": "Duration of timesheet entry in seconds. Has 0 value if employee does not clock out",
            "example": 28800
          },
          "person": {
            "$ref": "#/components/schemas/EmployeeSimpleOut"
          },
          "breaks": {
            "type": "array",
            "description": "List of breaks",
            "items": {
              "$ref": "#/components/schemas/BreakDto"
            }
          },
          "projects": {
            "type": "array",
            "description": "List of projects",
            "items": {
              "$ref": "#/components/schemas/ProjectDto"
            }
          },
          "closed": {
            "type": "boolean",
            "description": "Is shift closed?"
          },
          "description": {
            "type": "string",
            "description": "Shift description"
          }
        },
        "required": [
          "breaks",
          "closed",
          "duration",
          "id",
          "person",
          "projects",
          "started",
          "startedTimeZone"
        ]
      },
      "UpdateTeamIn": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Team ID"
          },
          "name": {
            "type": "string",
            "description": "Team name.",
            "example": "Marketing",
            "maxLength": 2147483647,
            "minLength": 1
          },
          "members": {
            "type": "array",
            "description": "Identifiers of team members.",
            "items": {
              "type": "integer",
              "format": "int64",
              "example": 123
            }
          },
          "managers": {
            "type": "array",
            "description": "Identifiers of team managers.",
            "items": {
              "type": "integer",
              "format": "int64",
              "example": 456
            }
          }
        },
        "required": [
          "id",
          "managers",
          "members",
          "name"
        ]
      },
      "WorkingDay": {
        "type": "object",
        "description": "Working week days.",
        "properties": {
          "dayName": {
            "type": "string",
            "description": "Working day name.",
            "enum": [
              "MONDAY",
              "TUESDAY",
              "WEDNESDAY",
              "THURSDAY",
              "FRIDAY",
              "SATURDAY",
              "SUNDAY"
            ],
            "example": "MONDAY"
          },
          "isWorkingDay": {
            "type": "boolean",
            "description": "Is it working day.",
            "example": true
          },
          "startTime": {
            "type": "string",
            "format": "time",
            "description": "Start of working time. Pattern: HH:mm:ss.SSS. Has null value when specified day is not working day.",
            "example": "09:00:00.000"
          },
          "finishTime": {
            "type": "string",
            "format": "time",
            "description": "Finish of working time. Pattern: HH:mm:ss.SSS. Has null value when specified day is not working day.",
            "example": "13:00:00.000"
          },
          "duration": {
            "type": "integer",
            "format": "int64",
            "description": "Work duration in seconds >= 0 or has null value when specified day is not working day.",
            "example": 28800
          }
        },
        "required": [
          "dayName",
          "duration",
          "finishTime",
          "isWorkingDay",
          "startTime"
        ]
      },
      "WorkingWeekOut": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Working week id.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "Working week name.",
            "example": "Full time"
          },
          "workingDays": {
            "type": "array",
            "description": "Working week days.",
            "items": {
              "$ref": "#/components/schemas/WorkingDay"
            }
          }
        },
        "required": [
          "id",
          "name",
          "workingDays"
        ]
      },
      "AddPersonRequestSchema": {
        "$ref": "#/components/schemas/add-person-request-schema"
      },
      "AddPersonResponseSchema": {
        "$ref": "#/components/schemas/add-person-response-schema"
      },
      "UpdatePersonRequestSchema": {
        "$ref": "#/components/schemas/update-person-request-schema"
      },
      "PersonIdentifierParamSchema": {
        "$ref": "#/components/schemas/person-identifier-param-schema"
      },
      "BadRequestSchema": {
        "$ref": "#/components/schemas/bad-request-schema"
      },
      "NotFoundErrorSchema": {
        "$ref": "#/components/schemas/not-found-schema"
      },
      "ForbiddenSchema": {
        "$ref": "#/components/schemas/forbidden-schema"
      },
      "InternalServerErrorSchema": {
        "$ref": "#/components/schemas/internal-server-error-schema"
      },
      "sex-schema": {
        "type": [
          "string",
          "null"
        ],
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Sex.",
        "enum": [
          "MALE",
          "FEMALE",
          "OTHER",
          null
        ]
      },
      "martial-status-schema": {
        "type": [
          "string",
          "null"
        ],
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Martial status.",
        "enum": [
          "SINGLE",
          "MARRIED",
          "WIDOWED",
          "SEPARATED",
          "DIVORCED",
          "DOMESTIC_PARTNERSHIP",
          "COMMON_LAW",
          "OTHER",
          null
        ]
      },
      "add-person-request-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Person's first name.",
            "example": "John",
            "maxLength": 255,
            "minLength": 1
          },
          "middleName": {
            "anyOf": [
              {
                "type": "string",
                "example": "Paul",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Person's middle name (Core HR module required)."
          },
          "lastName": {
            "type": "string",
            "description": "Person's last name.",
            "example": "Doe",
            "maxLength": 255,
            "minLength": 1
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Valid email address.",
            "example": "john.doe@example.com",
            "maxLength": 255,
            "minLength": 1
          },
          "approvalProcess": {
            "anyOf": [
              {
                "type": "string",
                "example": "Basic Approval Flow"
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 1000
              }
            ],
            "description": "Approval process name or identifier.",
            "maxLength": 255,
            "minLength": 1
          },
          "workSchedule": {
            "anyOf": [
              {
                "type": "string",
                "example": "Full-time - 40h",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 1
              }
            ],
            "description": "Work schedule name or identifier."
          },
          "holidaysCalendar": {
            "anyOf": [
              {
                "type": "string",
                "example": "Default",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 100
              }
            ],
            "description": "Holidays calendar name or identifier."
          },
          "contractType": {
            "anyOf": [
              {
                "type": "string",
                "example": "B2B"
              },
              {
                "type": "string",
                "format": "uuid",
                "example": "1fd9c842-ff42-471b-9267-5c5812019df0"
              },
              {
                "type": "null"
              }
            ],
            "description": "Contract type name or identifier.",
            "maxLength": 255,
            "minLength": 1
          },
          "hireDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "2025-01-15"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hire date in ISO 8601 format."
          },
          "birthdate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "1990-06-25"
              },
              {
                "type": "null"
              }
            ],
            "description": "Birthdate in ISO 8601 format (Core HR module required)."
          },
          "sex": {
            "$ref": "#/components/schemas/sex-schema",
            "description": "Person's sex.",
            "example": "MALE"
          },
          "position": {
            "anyOf": [
              {
                "type": "string",
                "example": "Senior Accountant",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Job position/title name or identifier."
          },
          "teams": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "examples": [
                        "Accountants",
                        "Sellers"
                      ],
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "integer",
                      "format": "int64",
                      "examples": [
                        1,
                        3
                      ]
                    }
                  ]
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "List of team names or identifiers the person belongs to.",
            "example": [
              "Accountants",
              3
            ]
          },
          "maritalStatus": {
            "$ref": "#/components/schemas/martial-status-schema",
            "description": "Describes a person's relationship with a significant other.",
            "example": "MARRIED"
          },
          "terminationDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "2026-12-31"
              },
              {
                "type": "null"
              }
            ],
            "description": "Termination date if applicable (ISO 8601 format)."
          },
          "directManager": {
            "anyOf": [
              {
                "type": "string",
                "format": "email",
                "example": "patricia.kite@example.com"
              },
              {
                "type": "string",
                "format": "uuid",
                "example": "38715bd3-7ad5-4372-bcff-41a3c933af68"
              },
              {
                "type": "null"
              }
            ],
            "description": "Unique e-mail address or UUID of the direct manager.",
            "maxLength": 255,
            "minLength": 1
          },
          "probationEndDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "2025-07-01"
              },
              {
                "type": "null"
              }
            ],
            "description": "End date of probation period (ISO 8601 format)."
          },
          "externalNumber": {
            "anyOf": [
              {
                "type": "string",
                "example": "EMP-98765",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "External reference number for the person."
          },
          "symfoniaGuid": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
              },
              {
                "type": "null"
              }
            ],
            "description": "GUID from Symfonia system (Time Off module required)."
          },
          "customNote": {
            "anyOf": [
              {
                "type": "string",
                "example": "Works remotely on Fridays.",
                "maxLength": 1024,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom note or additional information"
          },
          "businessContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phone": {
                    "type": "string",
                    "description": "Business phone number.",
                    "example": "+1-555-1234",
                    "maxLength": 255,
                    "minLength": 1
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Business contact information (Core HR module required)."
          },
          "personalContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Personal phone number.",
                        "example": "+1-555-5678",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "email": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "email",
                        "description": "Personal e-mail address.",
                        "example": "john.doe.personal@example.com",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Personal contact information (Core HR module required)."
          },
          "seniorityBeforeHire": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "example": 24,
                "maxLength": 1200
              },
              {
                "type": "null"
              }
            ],
            "description": "Seniority in months before the hire date."
          },
          "address": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "street": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Street name.",
                        "example": "Main Street",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "number": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Building or apartment number.",
                        "example": "123",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "city": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "City name.",
                        "example": "New York",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "provinceState": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Province or state.",
                        "example": "NY",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "postalCode": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Postal code.",
                        "example": "10001",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "country": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Country name.",
                        "example": "USA",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Person's home address (Core HR module required)."
          },
          "emergencyContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Emergency contact name.",
                        "example": "Jane Doe",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "relationship": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Relationship to the person.",
                        "example": "Spouse",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Emergency contact phone number.",
                        "example": "+1-555-9999",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Emergency contact details (Core HR module required)."
          },
          "bankAccountNumber": {
            "anyOf": [
              {
                "type": "string",
                "example": "US12345678901234567890",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Person's bank account number (Core HR module required)."
          },
          "contractorDetails": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "taxNumber": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Tax identification number.",
                        "example": "123-45-6789",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyName": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Company name.",
                        "example": "Tech Solutions Inc.",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyAddress": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Company registered address.",
                        "example": "456 Business St, San Francisco, CA, USA",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Contractor-related details (Core HR module required)."
          },
          "shirtSize": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "XS",
                  "S",
                  "M",
                  "L",
                  "XL",
                  "2XL",
                  "3XL",
                  "4XL"
                ],
                "example": "M"
              },
              {
                "type": "null"
              }
            ],
            "description": "Shirt size (Core HR module required)."
          },
          "children": {
            "type": "array",
            "description": "List of persons' children (Core HR module required).",
            "items": {
              "type": "object",
              "properties": {
                "firstName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Child's first name.",
                      "example": "Emily",
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Child's last name.",
                      "example": "Doe",
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "birthdate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "description": "Child's birthdate in ISO 8601 format.",
                      "example": "2015-09-10"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "sex": {
                  "$ref": "#/components/schemas/sex-schema",
                  "description": "Child's sex.",
                  "example": "FEMALE"
                },
                "parent": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Other parent's name.",
                      "example": "Kathryn Doe",
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              }
            }
          },
          "customFields": {
            "type": "array",
            "description": "Custom attributes assigned to the person (Core HR module required). One of `text`, `multiline text`, `date`, `single-choice list`, `multiple choice list`, `numerical`, `boolean`.",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "description": "Custom field unique identifier.",
                      "example": "a0eae510-1fe5-46d4-a46d-b98a20bb5ae1"
                    },
                    {
                      "type": "string",
                      "description": "Custom field unique name. The unique name should be the Qualified Name of field by pattern: `Category/Group/Field`",
                      "example": "Skills/Languages spoken/Speaks fluently"
                    }
                  ],
                  "example": "Skills/Languages spoken/Speaks fluently",
                  "minLength": 1
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Restricted to `text` and `multiline text`.",
                      "example": "English"
                    },
                    {
                      "type": "string",
                      "format": "date",
                      "description": "Restricted to `date`.",
                      "example": "2020-07-24"
                    },
                    {
                      "type": "number",
                      "description": "Restricted to `numerical`.",
                      "example": 100.5
                    },
                    {
                      "type": "boolean",
                      "description": "Restricted to `boolean`.",
                      "example": true
                    },
                    {
                      "type": "array",
                      "description": "Restricted to `single-choice list`, `multiple choice list`. The value must be name or UUID.",
                      "example": [
                        "French",
                        "Spanish"
                      ],
                      "items": {
                        "anyOf": [
                          {
                            "type": "string",
                            "examples": [
                              "French",
                              "Spanish"
                            ]
                          },
                          {
                            "type": "string",
                            "format": "uuid",
                            "examples": [
                              "4f9082a3-1ebd-4062-8215-3eec1b7b2fda",
                              "a60115f7-8464-41c2-9852-88dfc3f141ba"
                            ]
                          }
                        ]
                      }
                    }
                  ],
                  "description": "Custom field value. Can be single value or array of values in case Single Choice Custom Field or Multi Choice Custom Field. The value is restricted by selected type."
                }
              },
              "required": [
                "name",
                "value"
              ]
            }
          }
        },
        "required": [
          "approvalProcess",
          "email",
          "firstName",
          "holidaysCalendar",
          "lastName",
          "workSchedule"
        ]
      },
      "add-person-response-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "example": "2c11e9ec-77d2-49fe-81aa-fab21f7b5aed"
          },
          "legacyId": {
            "type": "integer",
            "example": 1001
          }
        },
        "required": [
          "id",
          "legacyId"
        ]
      },
      "bad-request-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "The request is invalid due to syntax errors or incorrect parameters. Check the request structure and data format.",
        "properties": {
          "type": {
            "type": "string",
            "example": "about:blank"
          },
          "title": {
            "type": "string",
            "example": "One or more validation errors occurred."
          },
          "detail": {
            "type": "string",
            "example": "Please refer to the errors property for additional details."
          },
          "status": {
            "type": "number",
            "example": 400
          },
          "instance": {
            "type": "number",
            "example": 1
          },
          "errors": {
            "type": "object",
            "example": {
              "lastName": [
                "must not be blank"
              ]
            }
          }
        },
        "required": [
          "detail",
          "instance",
          "status",
          "title",
          "type"
        ]
      },
      "forbidden-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "type": {
            "type": "string",
            "example": "about:blank"
          },
          "title": {
            "type": "string",
            "example": "Licence error."
          },
          "detail": {
            "type": "string",
            "example": "Time Off module required."
          },
          "status": {
            "type": "number",
            "example": 402
          },
          "instance": {
            "type": "number",
            "example": 1
          }
        },
        "required": [
          "detail",
          "instance",
          "status",
          "title",
          "type"
        ]
      },
      "internal-server-error-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "type": {
            "type": "string",
            "example": "about:blank"
          },
          "title": {
            "type": "string",
            "example": "Internal server error."
          },
          "detail": {
            "type": "string",
            "example": "Detailed error message explaining the issue."
          },
          "status": {
            "type": "number",
            "example": 500
          },
          "instance": {
            "type": "number",
            "example": 1
          }
        },
        "required": [
          "detail",
          "instance",
          "status",
          "title",
          "type"
        ]
      },
      "person-identifier-param-schema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "anyOf": [
          {
            "type": "string",
            "format": "uuid",
            "description": "UUID without prefix (default)",
            "example": "24dc4a05-ef40-4c30-9b95-554bf3be8741"
          },
          {
            "type": "string",
            "description": "Legacy numeric ID",
            "example": "id:12345",
            "pattern": "^[^#/?\\s]+$"
          },
          {
            "type": "string",
            "description": "External number",
            "example": "number:12345",
            "pattern": "^[^#/?\\s]+$"
          },
          {
            "type": "string",
            "description": "Email address",
            "example": "email:example@local.com",
            "pattern": "^[^#/?\\s]+$"
          }
        ],
        "description": "The person identifier. Supports:\n\n• `24dc4a05-ef40-4c30-9b95-554bf3be8741` (UUID)  \n• `id:12345` (legacy numeric ID)  \n• `number:AO-00710` (external number)  \n• `email:example@local.com` (email address)  \n\n**Reserved characters in path segments**  \nAny reserved or unsafe character—literal (`#`, `/`, `?`, space) or percent-encoded (`%23`, `%2F`, `%3F`, `%20`, etc.)—will be blocked or truncated by the server at that character and everything after it.\n\n**Recommendation**  \n• Use only unreserved characters in path identifiers (no `#`, `/`, `?`, spaces).  \n• If an identifier may contain reserved characters, pass it as a query parameter or in the request body instead.\n"
      },
      "update-person-request-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "description": "Valid email address.",
            "example": "john.doe@example.com",
            "maxLength": 255,
            "minLength": 1
          },
          "firstName": {
            "type": "string",
            "description": "Person's first name.",
            "example": "John",
            "maxLength": 255,
            "minLength": 1
          },
          "middleName": {
            "anyOf": [
              {
                "type": "string",
                "example": "Paul",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Person's middle name (Core HR module required)."
          },
          "lastName": {
            "type": "string",
            "description": "Person's last name.",
            "example": "Doe",
            "maxLength": 255,
            "minLength": 1
          },
          "approvalProcess": {
            "anyOf": [
              {
                "type": "string",
                "example": "name:Basic Approval Flow"
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 1000
              }
            ],
            "description": "Approval process name or identifier.",
            "maxLength": 255,
            "minLength": 1
          },
          "workSchedule": {
            "anyOf": [
              {
                "type": "string",
                "example": "name:Full-time - 40h",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 1
              }
            ],
            "description": "Work schedule name or identifier."
          },
          "holidaysCalendar": {
            "anyOf": [
              {
                "type": "string",
                "example": "name:Default",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 100
              }
            ],
            "description": "Holidays calendar name or identifier."
          },
          "contractType": {
            "anyOf": [
              {
                "type": "string",
                "example": "name:B2B"
              },
              {
                "type": "string",
                "format": "uuid",
                "example": "1fd9c842-ff42-471b-9267-5c5812019df0"
              },
              {
                "type": "null"
              }
            ],
            "description": "Contract type name or identifier.",
            "maxLength": 255,
            "minLength": 1
          },
          "hireDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "2025-01-15"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hire date in ISO 8601 format."
          },
          "birthdate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "1990-06-25"
              },
              {
                "type": "null"
              }
            ],
            "description": "Birthdate in ISO 8601 format (Core HR module required)."
          },
          "sex": {
            "$ref": "#/components/schemas/sex-schema",
            "description": "Person's sex.",
            "example": "MALE"
          },
          "position": {
            "anyOf": [
              {
                "type": "string",
                "example": "Senior Accountant",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "integer",
                "format": "int64",
                "example": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Job position/title name or identifier."
          },
          "teams": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "examples": [
                        "name:Accountants",
                        "name:Sellers"
                      ],
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "integer",
                      "format": "int64",
                      "examples": [
                        1,
                        3
                      ]
                    }
                  ]
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "List of team names or identifiers the person belongs to.",
            "example": [
              "Accountants",
              3
            ]
          },
          "maritalStatus": {
            "$ref": "#/components/schemas/martial-status-schema",
            "description": "Describes a person's relationship with a significant other.",
            "example": "MARRIED"
          },
          "terminationDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "2026-12-31"
              },
              {
                "type": "null"
              }
            ]
          },
          "directManager": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "example": "38715bd3-7ad5-4372-bcff-41a3c933af68"
              },
              {
                "type": "string",
                "example": "id:12345"
              },
              {
                "type": "string",
                "example": "email:patricia.kite@example.com"
              },
              {
                "type": "string",
                "example": "number:AO-00710"
              },
              {
                "type": "null"
              }
            ],
            "description": "Identifier of the direct manager.",
            "maxLength": 255,
            "minLength": 1
          },
          "probationEndDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "example": "2025-07-01"
              },
              {
                "type": "null"
              }
            ],
            "description": "End date of probation period (ISO 8601 format)."
          },
          "externalNumber": {
            "anyOf": [
              {
                "type": "string",
                "example": "EMP-98765",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "External reference number for the person."
          },
          "symfoniaGuid": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
              },
              {
                "type": "null"
              }
            ],
            "description": "GUID from Symfonia system."
          },
          "customNote": {
            "anyOf": [
              {
                "type": "string",
                "example": "Works remotely on Fridays.",
                "maxLength": 1024,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom note or additional information"
          },
          "businessContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Business phone number.",
                        "example": "+1-555-1234",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Business contact information (Core HR module required)."
          },
          "personalContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Personal phone number.",
                        "example": "+1-555-5678",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "email": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "email",
                        "description": "Personal e-mail address.",
                        "example": "john.doe.personal@example.com",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Personal contact information (Core HR module required)."
          },
          "seniorityBeforeHire": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "example": 24,
                "maxLength": 1200
              },
              {
                "type": "null"
              }
            ],
            "description": "Seniority in months before the hire date."
          },
          "address": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "street": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Street name.",
                        "example": "Main Street",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "number": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Building or apartment number.",
                        "example": "123",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "city": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "City name.",
                        "example": "New York",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "provinceState": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Province or state.",
                        "example": "NY",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "postalCode": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Postal code.",
                        "example": "10001",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "country": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Country name.",
                        "example": "USA",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Person's home address (Core HR module required)."
          },
          "emergencyContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Emergency contact name.",
                        "example": "Jane Doe",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "relationship": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Relationship to the person.",
                        "example": "Spouse",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Emergency contact phone number.",
                        "example": "+1-555-9999",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Emergency contact details (Core HR module required)."
          },
          "bankAccountNumber": {
            "anyOf": [
              {
                "type": "string",
                "example": "US12345678901234567890",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "description": "Person's bank account number (Core HR module required)."
          },
          "contractorDetails": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "taxNumber": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Tax identification number.",
                        "example": "123-45-6789",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyName": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Company name.",
                        "example": "Tech Solutions Inc.",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyAddress": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Company registered address.",
                        "example": "456 Business St, San Francisco, CA, USA",
                        "maxLength": 255,
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Contractor-related details (Core HR module required)."
          },
          "shirtSize": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "XS",
                  "S",
                  "M",
                  "L",
                  "XL",
                  "2XL",
                  "3XL",
                  "4XL"
                ],
                "example": "M"
              },
              {
                "type": "null"
              }
            ],
            "description": "Shirt size (Core HR module required)."
          },
          "children": {
            "type": "array",
            "description": "List of persons' children (Core HR module required).\n\nNote: Include all active children. The excluded item will be removed.",
            "items": {
              "type": "object",
              "properties": {
                "firstName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Child's first name.",
                      "example": "Emily",
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastName": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Child's last name.",
                      "example": "Doe",
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "birthdate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "description": "Child's birthdate in ISO 8601 format.",
                      "example": "2015-09-10"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "sex": {
                  "$ref": "#/components/schemas/sex-schema",
                  "description": "Child's sex.",
                  "example": "FEMALE"
                },
                "parent": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Other parent's name.",
                      "example": "Kathryn Doe",
                      "maxLength": 255,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              }
            }
          },
          "customFields": {
            "type": "array",
            "description": "Custom attributes assigned to the person (Core HR module required).",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "description": "Custom field unique identifier.",
                      "example": "a0eae510-1fe5-46d4-a46d-b98a20bb5ae1"
                    },
                    {
                      "type": "string",
                      "description": "Custom field unique name. The unique name should be the Qualified Name of field by pattern: `Category/Group/Field`",
                      "example": "Skills/Languages spoken/Speaks fluently"
                    }
                  ],
                  "example": "Skills/Languages spoken/Speaks fluently",
                  "minLength": 1
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Restricted to `text` and `multiline text`.",
                      "example": "English"
                    },
                    {
                      "type": "string",
                      "format": "date",
                      "description": "Restricted to `date`.",
                      "example": "2020-07-24"
                    },
                    {
                      "type": "number",
                      "description": "Restricted to `numerical`.",
                      "example": 100.5
                    },
                    {
                      "type": "boolean",
                      "description": "Restricted to `boolean`.",
                      "example": true
                    },
                    {
                      "type": "array",
                      "description": "Restricted to `single-choice list`, `multiple choice list`. The value must be name or UUID.",
                      "example": [
                        "French",
                        "Spanish"
                      ],
                      "items": {
                        "anyOf": [
                          {
                            "type": "string",
                            "examples": [
                              "French",
                              "Spanish"
                            ]
                          },
                          {
                            "type": "string",
                            "format": "uuid",
                            "examples": [
                              "4f9082a3-1ebd-4062-8215-3eec1b7b2fda",
                              "a60115f7-8464-41c2-9852-88dfc3f141ba"
                            ]
                          }
                        ]
                      }
                    }
                  ],
                  "description": "Custom field value. Can be single value or array of values in case Single Choice Custom Field or Multi Choice Custom Field. The value is restricted by selected type."
                }
              },
              "required": [
                "name",
                "value"
              ]
            }
          }
        }
      },
      "not-found-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "type": {
            "type": "string",
            "example": "about:blank"
          },
          "title": {
            "type": "string",
            "example": "Person not found."
          },
          "detail": {
            "type": "string",
            "example": "The requested resource could not be found."
          },
          "status": {
            "type": "number",
            "example": 404
          },
          "instance": {
            "type": "number",
            "example": 1
          }
        },
        "required": [
          "detail",
          "instance",
          "status",
          "title",
          "type"
        ]
      },
      "SearchPeopleResponseSchema": {
        "$ref": "#/components/schemas/search-people-response-schema"
      },
      "BadRequestErrorSchema": {
        "$ref": "#/components/schemas/bad-request-error-schema"
      },
      "ForbiddenErrorSchema": {
        "$ref": "#/components/schemas/forbidden-request-error-schema"
      },
      "paginated-results-response-template-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "description": "Collection of items.",
            "items": {
              "type": "object",
              "description": "Item."
            }
          },
          "meta": {
            "type": "object",
            "description": "Collection of items.",
            "properties": {
              "limit": {
                "type": "integer",
                "format": "int64",
                "description": "Current limit",
                "example": 1,
                "minimum": 1
              },
              "offset": {
                "type": "integer",
                "format": "int64",
                "description": "Current offset",
                "example": 10,
                "minimum": 1
              },
              "total": {
                "type": "integer",
                "format": "int64",
                "description": "Total items",
                "example": 100,
                "minimum": 0
              }
            }
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "PaginatedResultsResponseTemplate"
      },
      "sex-optional-schema": {
        "type": [
          "string",
          "null"
        ],
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Sex.",
        "enum": [
          "MALE",
          "FEMALE",
          "OTHER",
          null
        ]
      },
      "martial-status-optional-schema": {
        "type": [
          "string",
          "null"
        ],
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Martial status.",
        "enum": [
          "SINGLE",
          "MARRIED",
          "WIDOWED",
          "SEPARATED",
          "DIVORCED",
          "DOMESTIC_PARTNERSHIP",
          "COMMON_LAW",
          "OTHER",
          "NOT_SET",
          null
        ]
      },
      "single-person-response-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier (UUID format).",
            "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
          },
          "legacyId": {
            "type": "integer",
            "format": "int64",
            "description": "Legacy numerical identifier.",
            "example": 1337
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string",
                "example": "John"
              },
              {
                "type": "null"
              }
            ],
            "description": "The first name of the person."
          },
          "middleName": {
            "anyOf": [
              {
                "type": "string",
                "example": "Gary"
              },
              {
                "type": "null"
              }
            ],
            "description": "The middle name of the person."
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string",
                "example": "Smith"
              },
              {
                "type": "null"
              }
            ],
            "description": "The last name of the person."
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email",
                "example": "john.smith@example.com"
              },
              {
                "type": "null"
              }
            ],
            "description": "Primary business email address."
          },
          "roles": {
            "anyOf": [
              {
                "type": "array",
                "example": [
                  "direct-manager"
                ],
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "System roles assigned to this person."
          },
          "archived": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "archivedDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-29T10:15:30Z"
              },
              {
                "type": "null"
              }
            ],
            "description": "Archiving timestamp in ISO-8601 format."
          },
          "position": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "anyOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "example": 8
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "anyOf": [
                      {
                        "type": "string",
                        "example": "Software Engineer"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Current position held by the person."
          },
          "birthdate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "businessContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "personalContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "email": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "email"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "address": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "street": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "number": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "city": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "provinceState": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "postalCode": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "country": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "sex": {
            "$ref": "#/components/schemas/sex-optional-schema"
          },
          "maritalStatus": {
            "$ref": "#/components/schemas/martial-status-optional-schema"
          },
          "hireDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "probationEndDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "terminationDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "seniorityBeforeHire": {
            "anyOf": [
              {
                "type": "integer",
                "example": 15
              },
              {
                "type": "null"
              }
            ]
          },
          "externalNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "symfoniaGuid": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
              },
              {
                "type": "null"
              }
            ]
          },
          "customNote": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "emergencyContact": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "relationship": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "phone": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "approvalFlow": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "format": "int64"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "contractType": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "holidaysCalendar": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "format": "int64"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "workSchedule": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "format": "int64"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "teams": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "format": "int64"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "name": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "directManager": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "legacyId": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "example": 1337
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "firstName": {
                    "anyOf": [
                      {
                        "type": "string",
                        "example": "John"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "The first name of the person."
                  },
                  "lastName": {
                    "anyOf": [
                      {
                        "type": "string",
                        "example": "Smith"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "The last name of the person."
                  },
                  "email": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "email"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "bankAccountNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "shirtSize": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "contractorDetails": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "taxNumber": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyName": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyAddress": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "children": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
                },
                "firstName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "birthdate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "sex": {
                  "$ref": "#/components/schemas/sex-optional-schema"
                },
                "parent": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id"
              ]
            }
          },
          "customFields": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "example": "52601c08-b7e5-4c60-a57f-2b1d74942543"
                    },
                    "type": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "TEXT",
                            "DATE",
                            "TEXT_AREA",
                            "BOOLEAN",
                            "SINGLE_CHOICE",
                            "MULTI_CHOICE",
                            "NUMERIC"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Custom field type."
                    },
                    "name": {
                      "type": "string"
                    },
                    "qualifiedName": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "qualifiedName",
                    "type",
                    "value"
                  ]
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "timeZone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id"
        ],
        "title": "SinglePersonResponseSchema"
      },
      "search-people-response-schema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "allOf": [
          {
            "$ref": "#/components/schemas/paginated-results-response-template-schema"
          },
          {
            "type": "object",
            "description": "Paginated collection of people records.",
            "properties": {
              "data": {
                "type": "array",
                "description": "List of people returned in the current page.",
                "items": {
                  "$ref": "#/components/schemas/single-person-response-schema"
                }
              },
              "meta": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "format": "int64"
                  },
                  "offset": {
                    "type": "integer",
                    "format": "int64"
                  },
                  "total": {
                    "type": "integer",
                    "format": "int64"
                  }
                }
              }
            }
          }
        ]
      },
      "bad-request-error-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "description": "General title of error",
            "example": "Bad Request"
          },
          "detail": {
            "type": [
              "string",
              "null"
            ],
            "description": "Detailed error message explaining the issue",
            "example": "Invalid parameter value"
          }
        },
        "required": [
          "title"
        ]
      },
      "forbidden-request-error-schema": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "description": "General title of error",
            "example": "Forbidden"
          },
          "detail": {
            "type": [
              "string",
              "null"
            ],
            "description": "Detailed error message explaining the issue",
            "example": "Token does not have the required scope"
          }
        },
        "required": [
          "title"
        ]
      },
      "PAG-401-schema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "title": {
            "type": "string",
            "description": "Type of error",
            "example": "Authentication failure"
          },
          "status": {
            "type": "string",
            "description": "HTTP status code",
            "example": 401
          },
          "detail": {
            "type": "string",
            "description": "Detailed error message explaining the issue.",
            "example": "Please check if valid API key was provided"
          }
        },
        "required": [
          "detail",
          "status",
          "title"
        ]
      },
      "PAG-401-schema-legacy": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string",
            "description": "Error details",
            "example": "Authentication failure"
          },
          "code": {
            "type": "string",
            "description": "General type of error",
            "example": "AUTH"
          },
          "field": {
            "type": "string",
            "description": "Leftover for backward compatibility",
            "example": null
          }
        },
        "required": [
          "code",
          "message"
        ]
      },
      "PAG-429-schema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "title": {
            "type": "string",
            "description": "Type of error",
            "example": "Request quota exceeded"
          },
          "status": {
            "type": "string",
            "description": "HTTP status code",
            "example": 429
          },
          "detail": {
            "type": "string",
            "description": "Detailed error message explaining the issue.",
            "example": "Your current usage is 101/day, 10/hour, 1/sec\nYour current limits 100/day, 10/hour, 1/sec."
          }
        },
        "required": [
          "detail",
          "status",
          "title"
        ]
      },
      "PAG-429-schema-legacy": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "General type of error",
            "example": "QUOTA_EXCEEDED"
          },
          "field": {
            "type": "string",
            "description": "Detailed info about quota and it's current usage",
            "example": "Your current usage is 101/day, 10/hour, 1/sec\nYour current limits 100/day, 10/hour, 1/sec."
          }
        },
        "required": [
          "code",
          "field"
        ]
      },
      "PAG-500-schema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "title": {
            "type": "string",
            "description": "Type of error",
            "example": "Internal server error."
          },
          "status": {
            "type": "string",
            "description": "HTTP status code",
            "example": 500
          },
          "detail": {
            "type": "string",
            "description": "Detailed error message explaining the issue.",
            "example": "Please try again later. If the issue persists, don't hesitate to reach to our Support via team@calamari.io"
          }
        },
        "required": [
          "detail",
          "status",
          "title"
        ]
      },
      "PAG-500-schema-legacy": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string",
            "description": "Error details",
            "example": "An unexpected error occurred"
          },
          "code": {
            "type": "string",
            "description": "General type of error",
            "example": "INTERNAL_SERVER_ERROR"
          }
        },
        "required": [
          "code",
          "message"
        ]
      },
      "PAG-504-schema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "title": {
            "type": "string",
            "description": "Type of error",
            "example": "Public API call exceeded timeout."
          },
          "status": {
            "type": "string",
            "description": "HTTP status code",
            "example": 504
          },
          "detail": {
            "type": "string",
            "description": "Detailed error message explaining the issue.",
            "example": "Please try again later. If the issue persists, don't hesitate to reach to our Support via team@calamari.io"
          }
        },
        "required": [
          "detail",
          "status",
          "title"
        ]
      },
      "PAG-504-schema-legacy": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string",
            "description": "Error details",
            "example": "Public API call exceeded timeout"
          },
          "code": {
            "type": "string",
            "description": "General type of error",
            "example": "TIMEOUT"
          }
        },
        "required": [
          "code",
          "message"
        ]
      }
    },
    "parameters": {
      "ContractTypesParameter": {
        "name": "contractTypes",
        "in": "query",
        "description": "Comma-separated list of contract type UUIDs used to filter people by contract types.",
        "required": false,
        "style": "form",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          }
        },
        "example": "41d2e841-7f1f-4545-be09-8a17606f0228,31d2e841-7f1f-4545-be09-8a17606f0228"
      },
      "PositionsParameter": {
        "name": "positions",
        "in": "query",
        "description": "Comma-separated list of position IDs used to filter people by positions.",
        "required": false,
        "style": "form",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "example": "1,2,3,4"
      },
      "TeamsParameter": {
        "name": "teams",
        "in": "query",
        "description": "Comma-separated list of team IDs used to filter people by team membership.",
        "required": false,
        "style": "form",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "example": "1,2,3,7,8"
      },
      "ArchivedParameter": {
        "name": "archived",
        "in": "query",
        "description": "Filter by archived status. Set to `true` to return only archived people, or `false` to return only active people.",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "boolean"
        },
        "example": true
      },
      "ProjectionParameter": {
        "name": "projection",
        "in": "query",
        "description": "Defines the projection strategy used for the response. \n- `FULL` (default): returns all available fields. \n- `BASIC`: returns a minimal subset of fields. \n- `CUSTOM`: returns only the fields specified in the `fields` parameter. When `CUSTOM` is used, the `fields` parameter is required.\n\nNote: Regardless of projection type, the response always includes `id`, `legacyId` and `archived` fields.",
        "required": false,
        "style": "form",
        "explode": false,
        "schema": {
          "type": "string",
          "enum": [
            "FULL",
            "BASIC",
            "CUSTOM"
          ]
        },
        "example": "CUSTOM"
      },
      "ProjectionFieldsParameter": {
        "name": "fields",
        "in": "query",
        "description": "Comma-separated list of field names to include in the response. Only applicable when `projection=CUSTOM`.\n\nNote: Regardless of the list, the fields `id`, `legacyId` and `archived` are always returned.",
        "required": false,
        "style": "form",
        "explode": false,
        "schema": {
          "type": "string",
          "items": {
            "type": "string"
          }
        },
        "example": "firstName,lastName,email"
      },
      "LimitParameter": {
        "name": "limit",
        "in": "query",
        "description": "The maximum number of items to return. Must be greater than or equal to 1. Default is 100.",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "integer",
          "default": 100,
          "minimum": 1
        },
        "example": 50
      },
      "OffsetParameter": {
        "name": "offset",
        "in": "query",
        "description": "The number of items to skip before returning the results. Must be greater than or equal to 0. Default is 0.",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "integer",
          "default": 0,
          "minimum": 0
        },
        "example": 10
      },
      "SortParameter": {
        "name": "sort",
        "in": "query",
        "description": "Sorting criteria in the format `field,ASC` or `field,DESC`. Can be repeated to apply multi-level sorting.",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Sorting expression, e.g., `id,DESC` or `name,ASC`."
          }
        },
        "example": [
          "id,DESC",
          "name,ASC"
        ]
      },
      "NullOrderingParameter": {
        "name": "nullOrdering",
        "in": "query",
        "description": "Specifies how NULL values are sorted. Options: `NULLS_FIRST` or `NULLS_LAST`. Default is `NULLS_FIRST`.",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "string",
          "default": "NULLS_FIRST",
          "enum": [
            "NULLS_FIRST",
            "NULLS_LAST"
          ]
        },
        "example": "NULLS_LAST"
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}