{
  "swagger": "2.0",
  "info": {
    "title": "HR API",
    "description": "<a href='swaggerv2.json'>Download Swagger Json in OAS2 Format.</a>",
    "contact": {
      "name": "Iris Software Group",
      "url": "https://help.iris.co.uk/hr/cascade/api/",
      "email": "hrapi@iris.co.uk"
    },
    "version": "2"
  },
  "host": "api.iris.co.uk",
  "basePath": "/hr/v2",
  "schemes": [
    "https"
  ],
  "paths": {
    "/employees": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of Employees.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 1000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 1000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmployeeQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Creates a new Employee.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "New Employee.",
            "schema": {
              "$ref": "#/definitions/CreateEmployeeCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a single Employee referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmployeeModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employees"
        ],
        "summary": "Update an Employee referenced by ID.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of Employee to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new state of the Employee.",
            "schema": {
              "$ref": "#/definitions/UpdateEmployeeCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Employees"
        ],
        "summary": "Patches an Employee record referenced by ID using JsonPatch. See https://jsonpatch.com/ for details.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Employee to patch.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The Json Patch Actions.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/absencedays": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Absence Days.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceDayQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/absences": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Absences.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/bankdetails": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Bank Details.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 2000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 2000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BankDetailsQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/benefits": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Benefits.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BenefitQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/emergencycontacts": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Emergency Contacts.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 4000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 4000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmergencyContactQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/entitlements": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Entitlements.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EntitlementQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/jobs": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Jobs.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 1500, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 1500,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JobQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/employees/{id}/workingpatternoverridecomponents": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets a list of an Employee's Working Pattern Override Components.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 10000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 10000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternOverrideComponentQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/jobs": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets a list of Jobs.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 1500, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 1500,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JobQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Creates a new Job.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "populateBasedOnPositionId",
            "description": "When true, null Job fields are populated from the Position identified by PositionId.\r\nPositionId is required and must exist in the Positions service.",
            "type": "boolean",
            "default": false
          },
          {
            "in": "body",
            "name": "body",
            "description": "New Job.",
            "schema": {
              "$ref": "#/definitions/CreateJobCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          }
        }
      }
    },
    "/jobs/{id}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets a single Job referenced by an ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Job ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JobModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Jobs"
        ],
        "summary": "Update a Job referenced by an ID.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Job to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new state of the Job.",
            "schema": {
              "$ref": "#/definitions/UpdateJobCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Jobs"
        ],
        "summary": "Patches a Job record referenced by ID using JsonPatch. See https://jsonpatch.com/ for details.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Job to patch.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The Json Patch Actions.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/emergencycontacts": {
      "get": {
        "tags": [
          "EmergencyContacts"
        ],
        "summary": "Gets a list of Employee Emergency Contacts.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 4000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 4000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmergencyContactQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "EmergencyContacts"
        ],
        "summary": "Creates a new Employee Emergency Contact.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "New Emergency Contact.",
            "schema": {
              "$ref": "#/definitions/CreateEmergencyContactCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          }
        }
      }
    },
    "/emergencycontacts/{id}": {
      "get": {
        "tags": [
          "EmergencyContacts"
        ],
        "summary": "Gets a single Employee Emergency Contact referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Emergeny Contact ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmergencyContactModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "EmergencyContacts"
        ],
        "summary": "Update an Employee Emergency Contact referenced by ID.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of Emergency Contact to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new state of the Emergency Contact.",
            "schema": {
              "$ref": "#/definitions/UpdateEmergencyContactCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "EmergencyContacts"
        ],
        "summary": "Delete an Employee Emergency Contact referenced by ID.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Employee Emergency Contact to delete.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/calendar/employees/{employeeId}": {
      "get": {
        "tags": [
          "Calendar"
        ],
        "summary": "Gets a single Employee Calendar referenced by Employee ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "employeeId",
            "description": "Employee ID. \r\n\r\n            Must exist in Employees service.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "startDate",
            "description": "The first day of the generated employee calendar.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "endDate",
            "description": "The last day of the generated employee calendar. \r\n\r\n            Must be after and within 366 days of startDate.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "publicHolidays",
            "description": "Include Public Holidays in generated employee calendar.",
            "type": "boolean",
            "default": true
          },
          {
            "in": "query",
            "name": "workingPatterns",
            "description": "Include Employee's Working Pattern in generated employee calendar.",
            "type": "boolean",
            "default": true
          },
          {
            "in": "query",
            "name": "workingPatternOverrides",
            "description": "Include Employee's Working Pattern Overrides in generated employee calendar.",
            "type": "boolean",
            "default": true
          },
          {
            "in": "query",
            "name": "absences",
            "description": "Include Employee's Absences in generated employee calendar.",
            "type": "boolean",
            "default": true
          },
          {
            "in": "query",
            "name": "ignoreShowOnCalendar",
            "description": "Ignore the Absence Reasons ShowOnCalendar property and show all Absences.",
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmployeeCalendarModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/workingpatternoverridecomponents": {
      "get": {
        "tags": [
          "WorkingPatternOverrideComponents"
        ],
        "summary": "Gets a list of Employee Working Pattern Override Components.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 10000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 10000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternOverrideComponentQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "WorkingPatternOverrideComponents"
        ],
        "summary": "Creates a new Employee Working Pattern Override Component.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "New Working Pattern Override Component.",
            "schema": {
              "$ref": "#/definitions/CreateWorkingPatternOverrideComponentCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          }
        }
      }
    },
    "/workingpatternoverridecomponents/{id}": {
      "get": {
        "tags": [
          "WorkingPatternOverrideComponents"
        ],
        "summary": "Gets a single Employee Working Pattern Override Component referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Working Pattern Override Component ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternOverrideComponentModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "WorkingPatternOverrideComponents"
        ],
        "summary": "Update an Employee Working Pattern Override Component referenced by ID.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of Working Pattern Override Component to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new state of the Working Pattern Override Component.",
            "schema": {
              "$ref": "#/definitions/UpdateWorkingPatternOverrideComponentCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "WorkingPatternOverrideComponents"
        ],
        "summary": "Delete an Employee Working Pattern Override Component referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Employee Working Pattern Override Component to delete.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/workingpatternoverride/employees/{employeeId}": {
      "get": {
        "tags": [
          "WorkingPatternOverride"
        ],
        "summary": "Gets a working pattern override for a given date range and Employee Id.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "employeeId",
            "description": "The ID of the Employee that the Working Pattern Override apply. \r\n\r\n            Must exist in Employee Service.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "startDate",
            "description": "The first day of the generated working pattern override.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "endDate",
            "description": "The last day of the generated working pattern override. \r\n\r\n            Must be after and within 366 days of startDate.",
            "required": true,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternOverrideModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/workingpatterncomponents": {
      "get": {
        "tags": [
          "WorkingPatternComponents"
        ],
        "summary": "Get all Working Pattern Components.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 1000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 1000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternComponentsQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/workingpatterncomponents/{id}": {
      "get": {
        "tags": [
          "WorkingPatternComponents"
        ],
        "summary": "Get a Working Pattern Components by Id.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Working Pattern Id.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternComponentsModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/workingpatterns": {
      "get": {
        "tags": [
          "WorkingPatterns"
        ],
        "summary": "Gets a list of working patterns for a given date range.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "startDate",
            "description": "The first day of the generated working patterns.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "endDate",
            "description": "The last day of the generated working patterns. \r\n\r\n            Must be after and within 366 days of startDate.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 500, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 500,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/workingpatterns/{id}": {
      "get": {
        "tags": [
          "WorkingPatterns"
        ],
        "summary": "Gets a working pattern for a given date range and Id.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Working Pattern Id.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "startDate",
            "description": "The first day of the generated working pattern.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "endDate",
            "description": "The last day of the generated working pattern. \r\n\r\n            Must be after and within 366 days of startDate.",
            "required": true,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkingPatternModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/workingpatterncomponents/{id}/jobs": {
      "get": {
        "tags": [
          "WorkingPatternComponents"
        ],
        "summary": "Gets a list of a Working Pattern's Jobs.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Working Pattern ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 1500, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 1500,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JobQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencereasons": {
      "get": {
        "tags": [
          "AbsenceReasons"
        ],
        "summary": "Gets a list of Absence Reasons",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 5000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 5000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceReasonQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencereasons/{id}": {
      "get": {
        "tags": [
          "AbsenceReasons"
        ],
        "summary": "Gets a single Absence Reason referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Absence Reason ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceReasonModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencereasons/{id}/absences": {
      "get": {
        "tags": [
          "AbsenceReasons"
        ],
        "summary": "Gets an Absence Reason's Absences.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Absence Reason ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencereasons/{id}/entitlements": {
      "get": {
        "tags": [
          "AbsenceReasons"
        ],
        "summary": "Gets an Absence Reason's Entitlements.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Absence Reason ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EntitlementQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencereasons/{id}/absencereasons": {
      "get": {
        "tags": [
          "AbsenceReasons"
        ],
        "summary": "Gets a Parent Absence Reason's Child Absence Reasons.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Absence Reason ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceReasonQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencereasons/{id}/employees/{employeeId}": {
      "get": {
        "tags": [
          "AbsenceReasons"
        ],
        "summary": "Gets a single Employee Absence Reason referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Absence Reason ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "employeeId",
            "description": "Employee ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmployeeAbsenceReasonModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absences": {
      "get": {
        "tags": [
          "Absences"
        ],
        "summary": "Gets a list of Absences.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "Absences"
        ],
        "summary": "Creates a new Absence.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "autoGenerateDaysBasedOnWorkingPattern",
            "description": "Create the Absence Days automatically based on the Employee's Working Pattern.",
            "type": "boolean",
            "default": false
          },
          {
            "in": "body",
            "name": "body",
            "description": "New Absence.",
            "schema": {
              "$ref": "#/definitions/CreateAbsenceCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absences/{id}": {
      "get": {
        "tags": [
          "Absences"
        ],
        "summary": "Gets a single Absence referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Absence ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Absences"
        ],
        "summary": "Update an Absence referenced by ID.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Absence to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "autoGenerateDaysBasedOnWorkingPattern",
            "description": "Recreate the Absence Days automatically based on the Employee's Working Pattern.",
            "type": "boolean",
            "default": false
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new state of the Absence.",
            "schema": {
              "$ref": "#/definitions/UpdateAbsenceCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Absences"
        ],
        "summary": "Patches an Absence record referenced by ID using JsonPatch. See https://jsonpatch.com/ for details.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Absence to patch.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "autoGenerateDaysBasedOnWorkingPattern",
            "description": "Recreate the Absence Days automatically based on the Employee's Working Pattern.",
            "type": "boolean",
            "default": false
          },
          {
            "in": "body",
            "name": "body",
            "description": "The Json Patch Actions.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Absences"
        ],
        "summary": "Delete an Absence referenced by ID.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Absence to delete.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absences/{id}/absencedays": {
      "get": {
        "tags": [
          "Absences"
        ],
        "summary": "Gets an Absence's Absence Days.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceDayQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/maternities": {
      "get": {
        "tags": [
          "Maternities"
        ],
        "summary": "Gets a list of Maternities.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MaternityQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/maternities/{id}": {
      "get": {
        "tags": [
          "Maternities"
        ],
        "summary": "Gets a single Maternity referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Maternity ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MaternityModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/attendance/paternities": {
      "get": {
        "tags": [
          "Paternities"
        ],
        "summary": "Gets a list of Paternites.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PaternityQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/paternities/{id}": {
      "get": {
        "tags": [
          "Paternities"
        ],
        "summary": "Gets a single Paternity referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Paternity ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PaternityModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/attendance/adoptions": {
      "get": {
        "tags": [
          "Adoptions"
        ],
        "summary": "Gets a list of Adoptions.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true; version=1",
          "application/json;odata.metadata=minimal;odata.streaming=false; version=1",
          "application/json;odata.metadata=minimal; version=1",
          "application/json;odata.metadata=full;odata.streaming=true; version=1",
          "application/json;odata.metadata=full;odata.streaming=false; version=1",
          "application/json;odata.metadata=full; version=1",
          "application/json;odata.metadata=none;odata.streaming=true; version=1",
          "application/json;odata.metadata=none;odata.streaming=false; version=1",
          "application/json;odata.metadata=none; version=1",
          "application/json;odata.streaming=true; version=1",
          "application/json;odata.streaming=false; version=1",
          "application/json; version=1",
          "application/xml; version=1",
          "text/plain; version=1"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AdoptionQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/adoptions/{id}": {
      "get": {
        "tags": [
          "Adoptions"
        ],
        "summary": "Gets a single Adoption referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true; version=1",
          "application/json;odata.metadata=minimal;odata.streaming=false; version=1",
          "application/json;odata.metadata=minimal; version=1",
          "application/json;odata.metadata=full;odata.streaming=true; version=1",
          "application/json;odata.metadata=full;odata.streaming=false; version=1",
          "application/json;odata.metadata=full; version=1",
          "application/json;odata.metadata=none;odata.streaming=true; version=1",
          "application/json;odata.metadata=none;odata.streaming=false; version=1",
          "application/json;odata.metadata=none; version=1",
          "application/json;odata.streaming=true; version=1",
          "application/json;odata.streaming=false; version=1",
          "application/json; version=1",
          "application/xml; version=1",
          "text/plain; version=1"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Adoption ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AdoptionModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencedays": {
      "get": {
        "tags": [
          "AbsenceDays"
        ],
        "summary": "Gets a list of all Absence Days.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 5000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 5000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceDayQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "AbsenceDays"
        ],
        "summary": "Creates an Absence Day.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "skipNonWorkingDays",
            "description": "Remove the Absence Day record if Cascade indicates the Employee's Working Pattern is a Non-Working Day.",
            "type": "boolean",
            "default": false
          },
          {
            "in": "body",
            "name": "body",
            "description": "The values for an Absence Day.",
            "schema": {
              "$ref": "#/definitions/CreateAbsenceDayCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/attendance/absencedays/{id}": {
      "get": {
        "tags": [
          "AbsenceDays"
        ],
        "summary": "Gets a single Absence Day based on ID given.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Absence Day ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbsenceDayModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "AbsenceDays"
        ],
        "summary": "Updates an Absence Day.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Absence Day to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The value of an Absence Day.",
            "schema": {
              "$ref": "#/definitions/UpdateAbsenceDayCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AbsenceDays"
        ],
        "summary": "Deletes an Absence Day.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Absence Day to delete.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/attendance/entitlements": {
      "get": {
        "tags": [
          "Entitlements"
        ],
        "summary": "Gets a list of Entitlements.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 1000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 1000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EntitlementQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/attendance/entitlements/{id}": {
      "get": {
        "tags": [
          "Entitlements"
        ],
        "summary": "Gets an Entitlement by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Entitlement ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EntitlementModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/bankdetails": {
      "get": {
        "tags": [
          "BankDetails"
        ],
        "summary": "Gets a list of Bank Details.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 2000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 2000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BankDetailsQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "BankDetails"
        ],
        "summary": "Creates a Bank Details.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The value of Bank Details.",
            "schema": {
              "$ref": "#/definitions/CreateBankDetailsCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ConflictResponseModel"
            }
          }
        }
      }
    },
    "/bankdetails/{id}": {
      "get": {
        "tags": [
          "BankDetails"
        ],
        "summary": "Gets a single Bank Details by an ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Bank Details ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BankDetailsModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "BankDetails"
        ],
        "summary": "Updates Bank Details.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of Bank Details to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The value of Bank Details.",
            "schema": {
              "$ref": "#/definitions/UpdateBankDetailsCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      },
      "patch": {
        "tags": [
          "BankDetails"
        ],
        "summary": "Patches a BankDetails record referenced by ID using JsonPatch. See https://jsonpatch.com/ for details.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/json-patch+json"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the BankDetail to Patch.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The Json Patch Actions.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/benefits": {
      "get": {
        "tags": [
          "Benefits"
        ],
        "summary": "Gets a list of Benefits.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 750, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 750,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BenefitQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      },
      "post": {
        "tags": [
          "Benefits"
        ],
        "summary": "Creates a Benefit.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The value of Benefit.",
            "schema": {
              "$ref": "#/definitions/CreateBenefitCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreatedEntitiyResponseModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          }
        }
      }
    },
    "/benefits/{id}": {
      "get": {
        "tags": [
          "Benefits"
        ],
        "summary": "Gets a single Benefit referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Benefit ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BenefitModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Benefits"
        ],
        "summary": "Updates Benefit.",
        "consumes": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml"
        ],
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Benefit to update.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The value of the Benefit.",
            "schema": {
              "$ref": "#/definitions/UpdateBenefitCommand"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Benefits"
        ],
        "summary": "Deletes Benefit.",
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the Benefit to delete.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ForbiddenResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/userdefinedfields/source/{sourceEntityId}": {
      "get": {
        "tags": [
          "UserDefinedFields"
        ],
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sourceEntityId",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/UserDefinedFieldQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/userdefinedfields/schema/{schemaId}": {
      "get": {
        "tags": [
          "UserDefinedFields"
        ],
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "schemaId",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/UserDefinedFieldQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/userdefinedfields/{id}": {
      "get": {
        "tags": [
          "UserDefinedFields"
        ],
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/UserDefinedFieldModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/userdefinedfieldschemas": {
      "get": {
        "tags": [
          "UserDefinedFieldSchemas"
        ],
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/UserDefinedFieldSchemaQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/userdefinedfieldschemas/{id}": {
      "get": {
        "tags": [
          "UserDefinedFieldSchemas"
        ],
        "description": "![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API request method is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/UserDefinedFieldSchemaModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "schema": {
              "$ref": "#/definitions/MethodNotAllowedResponseModel"
            }
          }
        }
      }
    },
    "/positions": {
      "get": {
        "tags": [
          "Positions"
        ],
        "summary": "Gets a list of Positions.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/prs.odatatestxx-odata",
          "text/plain",
          "text/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 5000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 5000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PositionQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/positions/{id}": {
      "get": {
        "tags": [
          "Positions"
        ],
        "summary": "Gets a single Position referenced by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/prs.odatatestxx-odata",
          "text/plain",
          "text/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Position ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PositionModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/positions/{id}/jobs": {
      "get": {
        "tags": [
          "Positions"
        ],
        "summary": "Gets a list of a Position's Jobs.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/prs.odatatestxx-odata",
          "text/plain",
          "text/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Position ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JobQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/positions/{id}/positions": {
      "get": {
        "tags": [
          "Positions"
        ],
        "summary": "Gets a list of a Position's child Positions.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "application/prs.odatatestxx-odata",
          "text/plain",
          "text/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Position ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 5000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 5000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PositionQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/hierarchy": {
      "get": {
        "tags": [
          "Hierarchy"
        ],
        "summary": "Gets a list of Hierarchy Nodes.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 5000, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 5000,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/HierarchyNodeQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/hierarchy/{id}": {
      "get": {
        "tags": [
          "Hierarchy"
        ],
        "summary": "Gets a single Hierarchy Node by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Hierarchy Node ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/HierarchyNodeModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/hierarchy/{id}/path": {
      "get": {
        "tags": [
          "Hierarchy"
        ],
        "summary": "Gets a Hierarchy Path by ID. The path is an array of nodes traversed from the root to the node specified.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Hierarchy Node ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/HierarchyNodeModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/hierarchy/{id}/jobs": {
      "get": {
        "tags": [
          "Hierarchy"
        ],
        "summary": "Gets a list of a Hierarchy Node's Jobs.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Hierarchy Node ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JobQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/publicholidays": {
      "get": {
        "tags": [
          "PublicHolidays"
        ],
        "summary": "Gets a set of Public Holidays with locations.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PublicHolidayQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    },
    "/publicholidays/{id}": {
      "get": {
        "tags": [
          "PublicHolidays"
        ],
        "summary": "Gets a location based Public Holiday list by ID.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Public Holiday ID.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PublicHolidayModel"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/NotFoundResponseModel"
            }
          }
        }
      }
    },
    "/publicholidays/{id}/jobs": {
      "get": {
        "tags": [
          "PublicHolidays"
        ],
        "summary": "Gets a list of a Public Holiday's Jobs.",
        "produces": [
          "application/json;odata.metadata=minimal;odata.streaming=true",
          "application/json;odata.metadata=minimal;odata.streaming=false",
          "application/json;odata.metadata=minimal",
          "application/json;odata.metadata=full;odata.streaming=true",
          "application/json;odata.metadata=full;odata.streaming=false",
          "application/json;odata.metadata=full",
          "application/json;odata.metadata=none;odata.streaming=true",
          "application/json;odata.metadata=none;odata.streaming=false",
          "application/json;odata.metadata=none",
          "application/json;odata.streaming=true",
          "application/json;odata.streaming=false",
          "application/json",
          "application/xml",
          "text/plain"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Public Holiday ID.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "$top",
            "description": "Show only the first n items, maximum of 250, see [Paging - Top](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "type": "integer",
            "maximum": 250,
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$skip",
            "description": "Skip the first n items, see [Paging - Skip](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "type": "integer",
            "minimum": 0
          },
          {
            "in": "query",
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$select",
            "description": "Select properties to be returned, see [Select](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "type": "string"
          },
          {
            "in": "query",
            "name": "$count",
            "description": "Include count of items, see [Count](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "type": "boolean",
            "minimum": 0
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/UnauthorizedResponseModel"
            }
          },
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JobQueryModel"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/BadRequestResponseModel"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "EmployeeQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmployeeModel"
          }
        }
      },
      "additionalProperties": false
    },
    "EmployeeModel": {
      "description": "An HR Employee.",
      "required": [
        "FirstName",
        "LastName"
      ],
      "type": "object",
      "properties": {
        "DisplayId": {
          "description": "The Display ID of the Employee. \r\n\r\nIf provided must be unqiue, If null then it will automatically be generated. \r\n\r\nCascade Source: [Employee].[DisplayEmployeeId]",
          "maxLength": 50,
          "type": "string"
        },
        "TitleHonorific": {
          "description": "The Title of the Employee. E.g. Mr, Mrs, Miss. \r\n\r\nCascade Source: [Employee].[Title] translated through the TITLE system list.",
          "maxLength": 50,
          "type": "string"
        },
        "FirstName": {
          "description": "The First Name of the Employee. \r\n\r\nCascade Source: [Employee].[Forename]",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "KnownAs": {
          "description": "The name the Employee is commonly known as. \r\n\r\nCascade Source: [Employee].[KnownAs]",
          "maxLength": 50,
          "type": "string"
        },
        "OtherName": {
          "description": "Any other name that the Employee has. \r\n\r\nCascade Source: [Employee].[OtherName]",
          "maxLength": 50,
          "type": "string"
        },
        "LastName": {
          "description": "The Last Name, Surname or Family Name of the Employee. \r\n\r\nCascade Source: [Employee].[Surname]",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "CostCentre": {
          "description": "The Cost Centre assigned to the Employee. \r\n\r\nCascade Source: [Employee].[CostCentre]",
          "maxLength": 50,
          "type": "string"
        },
        "WorkingStatus": {
          "description": "The Status of the Employee E.g. On Holiday, Sick. \r\n\r\nAutomatically Calculated. \r\n\r\nCascade Source: [Sysview_Employee_Status].[StatusDescription]",
          "maxLength": 511,
          "type": "string",
          "readOnly": true
        },
        "IsManager": {
          "description": "Indicates if the Employee is a Manager. \r\n\r\nTrue if any other Employee's active <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Job\">Job</see> has this Employee as their Line Manager. \r\n\r\nAutomaticaly Calculated.",
          "type": "boolean",
          "readOnly": true
        },
        "NationalInsuranceNumber": {
          "description": "The National Insurance Number of the Employee. \r\n\r\nCascade Source: [Employee].[NationalInsuranceNo]",
          "maxLength": 50,
          "type": "string"
        },
        "PayrollId": {
          "description": "The Payroll ID of the Employee. \r\n\r\nCascade Source: [Employee].[PayrollId]",
          "maxLength": 50,
          "type": "string"
        },
        "TaxCode": {
          "description": "The Tax Code of the Employee. \r\n\r\nCascade Source: [Employee].[TaxCode]",
          "maxLength": 5,
          "type": "string"
        },
        "IncludeInPayroll": {
          "description": "Indicates if the Employee should be included in Payroll. \r\n\r\nCascade Source: [Employee].[IncludeInPayroll]",
          "type": "boolean"
        },
        "EmploymentStartDate": {
          "format": "date-time",
          "description": "The date the Employee started with their current Employer. \r\n\r\nCascade Source: [Employee].[EmployeeStartDate]",
          "type": "string"
        },
        "EmploymentLeftDate": {
          "format": "date-time",
          "description": "The date the Employee left their current Employer. \r\n\r\nCascade Source: [Employee].[LeftDate]",
          "type": "string"
        },
        "ContinuousServiceDate": {
          "format": "date-time",
          "description": "The date the Employee's continuous service should be applied from. \r\n\r\nCascade Source: [Employee].[ContServiceDate]",
          "type": "string"
        },
        "DateOfBirth": {
          "format": "date-time",
          "description": "The Date of Birth of the Employee. \r\n\r\nCascade Source: [Employee].[DateOfBirth]",
          "type": "string"
        },
        "LastWorkingDate": {
          "format": "date-time",
          "description": "The date of the last working date of the Employee. \r\n\r\nCascade Source: [Employee].[LeaverLastWorkDate]",
          "type": "string"
        },
        "Gender": {
          "description": "The Gender of the Employee. \r\n\r\nCascade Source: [Employee].[Sex] translated through the GENDER system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Ethnicity": {
          "description": "The Ethnicity of the Employee. \r\n\r\nCascade Source: [Employee].[EthnicOrigin] translated through the ETHNICTORIGIN system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Nationality": {
          "description": "The Nationality of the Employee. \r\n\r\nCascade Source: [Employee].[Nationality] translated through the NATIONALITY system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Religion": {
          "description": "The Religion of the Employee. \r\n\r\nCascade Source: [Employee].[Religion] transalated through the RELIGION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "LeaverReason": {
          "description": "The reason for the Employee to Leave. \r\n\r\nCascade Source: [Employee].[LeaverReason]",
          "maxLength": 50,
          "type": "string"
        },
        "MaritalStatus": {
          "description": "The marrital status of the Employee. \r\n\r\nCascade Source: [Employee].[MaritalStatus] translated through the MARITALSTATUS system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Phones": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Phone\">Phone Numbers</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Phone"
          }
        },
        "Emails": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Email\">Email Addresses</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Email"
          }
        },
        "Addresses": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Address\">Addresses</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Address"
          }
        },
        "GenderIdentity": {
          "description": "The Gender Identity of the Employee. \r\n\r\nCascade Source: [Employee].[GenderIdentity] translated through the GenderIdentity system list.",
          "maxLength": 50,
          "type": "string"
        },
        "WindowsUsername": {
          "description": "The Windows Username of the Employee. \r\n\r\nCascade Source: [Employee].[WindowsUsername]",
          "maxLength": 50,
          "type": "string"
        },
        "PayrollCompanyName": {
          "description": "The Payroll Company Name of the Employee. \r\n\r\nCascade Source: [Employee].[PayrollCompanyName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "Initials": {
          "description": "The Initials of the Employee. \r\n\r\nCannot be updated once Employee is created to prevent breaking change to API functionality. \r\n\r\nCascade Source: [Employee].[Initials]",
          "maxLength": 50,
          "type": "string"
        },
        "AssignedPaySchemes": {
          "$ref": "#/definitions/AssignedPaySchemes"
        },
        "LengthOfServiceYears": {
          "format": "int32",
          "description": "The number of whole years between the employees Cont. Service Date and Left Date or now, which ever comes first.",
          "type": "integer",
          "readOnly": true
        },
        "LengthOfServiceMonths": {
          "format": "int32",
          "description": "The number of whole months between the employees Cont. Service Date and Left Date or now, which ever comes first.",
          "type": "integer",
          "readOnly": true
        },
        "SourceSystemId": {
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [Employee].[EmployeeId]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Employee record was created in the Source HR System. \r\n\r\nCascade Source: [Employee].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The latest date when the Employee record was created or last updated in the Source HR System. \r\n\r\nCascade Source: [Employee].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID is generated by the Iris HR platform and does not relate to the Cascade Employee ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Employee was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Employee was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "CreateEmployeeCommand": {
      "required": [
        "FirstName",
        "LastName"
      ],
      "type": "object",
      "properties": {
        "DisplayId": {
          "description": "The Display ID of the Employee. \r\n\r\nIf provided must be unqiue, If null then it will automatically be generated. \r\n\r\nCascade Source: [Employee].[DisplayEmployeeId]",
          "maxLength": 50,
          "type": "string"
        },
        "TitleHonorific": {
          "description": "The Title of the Employee. E.g. Mr, Mrs, Miss. \r\n\r\nCascade Source: [Employee].[Title] translated through the TITLE system list.",
          "maxLength": 50,
          "type": "string"
        },
        "FirstName": {
          "description": "The First Name of the Employee. \r\n\r\nCascade Source: [Employee].[Forename]",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "KnownAs": {
          "description": "The name the Employee is commonly known as. \r\n\r\nCascade Source: [Employee].[KnownAs]",
          "maxLength": 50,
          "type": "string"
        },
        "OtherName": {
          "description": "Any other name that the Employee has. \r\n\r\nCascade Source: [Employee].[OtherName]",
          "maxLength": 50,
          "type": "string"
        },
        "LastName": {
          "description": "The Last Name, Surname or Family Name of the Employee. \r\n\r\nCascade Source: [Employee].[Surname]",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "CostCentre": {
          "description": "The Cost Centre assigned to the Employee. \r\n\r\nCascade Source: [Employee].[CostCentre]",
          "maxLength": 50,
          "type": "string"
        },
        "NationalInsuranceNumber": {
          "description": "The National Insurance Number of the Employee. \r\n\r\nCascade Source: [Employee].[NationalInsuranceNo]",
          "maxLength": 50,
          "type": "string"
        },
        "PayrollId": {
          "description": "The Payroll ID of the Employee. \r\n\r\nCascade Source: [Employee].[PayrollId]",
          "maxLength": 50,
          "type": "string"
        },
        "TaxCode": {
          "description": "The Tax Code of the Employee. \r\n\r\nCascade Source: [Employee].[TaxCode]",
          "maxLength": 5,
          "type": "string"
        },
        "IncludeInPayroll": {
          "description": "Indicates if the Employee should be included in Payroll. \r\n\r\nCascade Source: [Employee].[IncludeInPayroll]",
          "type": "boolean"
        },
        "EmploymentStartDate": {
          "format": "date-time",
          "description": "The date the Employee started with their current Employer. \r\n\r\nCascade Source: [Employee].[EmployeeStartDate]",
          "type": "string"
        },
        "EmploymentLeftDate": {
          "format": "date-time",
          "description": "The date the Employee left their current Employer. \r\n\r\nCascade Source: [Employee].[LeftDate]",
          "type": "string"
        },
        "ContinuousServiceDate": {
          "format": "date-time",
          "description": "The date the Employee's continuous service should be applied from. \r\n\r\nCascade Source: [Employee].[ContServiceDate]",
          "type": "string"
        },
        "DateOfBirth": {
          "format": "date-time",
          "description": "The Date of Birth of the Employee. \r\n\r\nCascade Source: [Employee].[DateOfBirth]",
          "type": "string"
        },
        "LastWorkingDate": {
          "format": "date-time",
          "description": "The date of the last working date of the Employee. \r\n\r\nCascade Source: [Employee].[LeaverLastWorkDate]",
          "type": "string"
        },
        "Gender": {
          "description": "The Gender of the Employee. \r\n\r\nCascade Source: [Employee].[Sex] translated through the GENDER system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Ethnicity": {
          "description": "The Ethnicity of the Employee. \r\n\r\nCascade Source: [Employee].[EthnicOrigin] translated through the ETHNICTORIGIN system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Nationality": {
          "description": "The Nationality of the Employee. \r\n\r\nCascade Source: [Employee].[Nationality] translated through the NATIONALITY system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Religion": {
          "description": "The Religion of the Employee. \r\n\r\nCascade Source: [Employee].[Religion] transalated through the RELIGION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "LeaverReason": {
          "description": "The reason for the Employee to Leave. \r\n\r\nCascade Source: [Employee].[LeaverReason]",
          "maxLength": 50,
          "type": "string"
        },
        "MaritalStatus": {
          "description": "The marrital status of the Employee. \r\n\r\nCascade Source: [Employee].[MaritalStatus] translated through the MARITALSTATUS system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Phones": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Phone\">Phone Numbers</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Phone"
          }
        },
        "Emails": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Email\">Email Addresses</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Email"
          }
        },
        "Addresses": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Address\">Addresses</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Address"
          }
        },
        "GenderIdentity": {
          "description": "The Gender Identity of the Employee. \r\n\r\nCascade Source: [Employee].[GenderIdentity] translated through the GenderIdentity system list.",
          "maxLength": 50,
          "type": "string"
        },
        "WindowsUsername": {
          "description": "The Windows Username of the Employee. \r\n\r\nCascade Source: [Employee].[WindowsUsername]",
          "maxLength": 50,
          "type": "string"
        },
        "Initials": {
          "description": "The Initials of the Employee. \r\n\r\nCannot be updated once Employee is created to prevent breaking change to API functionality. \r\n\r\nCascade Source: [Employee].[Initials]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UpdateEmployeeCommand": {
      "required": [
        "FirstName",
        "LastName"
      ],
      "type": "object",
      "properties": {
        "DisplayId": {
          "description": "The Display ID of the Employee. \r\n\r\nIf provided must be unqiue, If null then it will automatically be generated. \r\n\r\nCascade Source: [Employee].[DisplayEmployeeId]",
          "maxLength": 50,
          "type": "string"
        },
        "TitleHonorific": {
          "description": "The Title of the Employee. E.g. Mr, Mrs, Miss. \r\n\r\nCascade Source: [Employee].[Title] translated through the TITLE system list.",
          "maxLength": 50,
          "type": "string"
        },
        "FirstName": {
          "description": "The First Name of the Employee. \r\n\r\nCascade Source: [Employee].[Forename]",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "KnownAs": {
          "description": "The name the Employee is commonly known as. \r\n\r\nCascade Source: [Employee].[KnownAs]",
          "maxLength": 50,
          "type": "string"
        },
        "OtherName": {
          "description": "Any other name that the Employee has. \r\n\r\nCascade Source: [Employee].[OtherName]",
          "maxLength": 50,
          "type": "string"
        },
        "LastName": {
          "description": "The Last Name, Surname or Family Name of the Employee. \r\n\r\nCascade Source: [Employee].[Surname]",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "CostCentre": {
          "description": "The Cost Centre assigned to the Employee. \r\n\r\nCascade Source: [Employee].[CostCentre]",
          "maxLength": 50,
          "type": "string"
        },
        "NationalInsuranceNumber": {
          "description": "The National Insurance Number of the Employee. \r\n\r\nCascade Source: [Employee].[NationalInsuranceNo]",
          "maxLength": 50,
          "type": "string"
        },
        "PayrollId": {
          "description": "The Payroll ID of the Employee. \r\n\r\nCascade Source: [Employee].[PayrollId]",
          "maxLength": 50,
          "type": "string"
        },
        "TaxCode": {
          "description": "The Tax Code of the Employee. \r\n\r\nCascade Source: [Employee].[TaxCode]",
          "maxLength": 5,
          "type": "string"
        },
        "IncludeInPayroll": {
          "description": "Indicates if the Employee should be included in Payroll. \r\n\r\nCascade Source: [Employee].[IncludeInPayroll]",
          "type": "boolean"
        },
        "EmploymentStartDate": {
          "format": "date-time",
          "description": "The date the Employee started with their current Employer. \r\n\r\nCascade Source: [Employee].[EmployeeStartDate]",
          "type": "string"
        },
        "EmploymentLeftDate": {
          "format": "date-time",
          "description": "The date the Employee left their current Employer. \r\n\r\nCascade Source: [Employee].[LeftDate]",
          "type": "string"
        },
        "ContinuousServiceDate": {
          "format": "date-time",
          "description": "The date the Employee's continuous service should be applied from. \r\n\r\nCascade Source: [Employee].[ContServiceDate]",
          "type": "string"
        },
        "DateOfBirth": {
          "format": "date-time",
          "description": "The Date of Birth of the Employee. \r\n\r\nCascade Source: [Employee].[DateOfBirth]",
          "type": "string"
        },
        "LastWorkingDate": {
          "format": "date-time",
          "description": "The date of the last working date of the Employee. \r\n\r\nCascade Source: [Employee].[LeaverLastWorkDate]",
          "type": "string"
        },
        "Gender": {
          "description": "The Gender of the Employee. \r\n\r\nCascade Source: [Employee].[Sex] translated through the GENDER system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Ethnicity": {
          "description": "The Ethnicity of the Employee. \r\n\r\nCascade Source: [Employee].[EthnicOrigin] translated through the ETHNICTORIGIN system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Nationality": {
          "description": "The Nationality of the Employee. \r\n\r\nCascade Source: [Employee].[Nationality] translated through the NATIONALITY system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Religion": {
          "description": "The Religion of the Employee. \r\n\r\nCascade Source: [Employee].[Religion] transalated through the RELIGION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "LeaverReason": {
          "description": "The reason for the Employee to Leave. \r\n\r\nCascade Source: [Employee].[LeaverReason]",
          "maxLength": 50,
          "type": "string"
        },
        "MaritalStatus": {
          "description": "The marrital status of the Employee. \r\n\r\nCascade Source: [Employee].[MaritalStatus] translated through the MARITALSTATUS system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Phones": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Phone\">Phone Numbers</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Phone"
          }
        },
        "Emails": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Email\">Email Addresses</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Email"
          }
        },
        "Addresses": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.Address\">Addresses</see> belonging to the Employee.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Address"
          }
        },
        "GenderIdentity": {
          "description": "The Gender Identity of the Employee. \r\n\r\nCascade Source: [Employee].[GenderIdentity] translated through the GenderIdentity system list.",
          "maxLength": 50,
          "type": "string"
        },
        "WindowsUsername": {
          "description": "The Windows Username of the Employee. \r\n\r\nCascade Source: [Employee].[WindowsUsername]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Address": {
      "description": "The Address of a property",
      "type": "object",
      "properties": {
        "Ownership": {
          "$ref": "#/definitions/Ownership"
        },
        "Address1": {
          "description": "Address Line 1 \r\n\r\nCascade Source: [EmployeeHomeAddress].[Address1]",
          "maxLength": 50,
          "type": "string"
        },
        "Address2": {
          "description": "Address Line 2 \r\n\r\nCascade Source: [EmployeeHomeAddress].[Address2]",
          "maxLength": 50,
          "type": "string"
        },
        "Address3": {
          "description": "Address Line 3 \r\n\r\nCascade Source: [EmployeeHomeAddress].[Address3]",
          "maxLength": 50,
          "type": "string"
        },
        "Address4": {
          "description": "Address Line 4 \r\n\r\nCascade Source: [EmployeeHomeAddress].[Address4]",
          "maxLength": 50,
          "type": "string"
        },
        "Address5": {
          "description": "Address Line 5 \r\n\r\nCascade Source: [EmployeeHomeAddress].[Address5]",
          "maxLength": 50,
          "type": "string"
        },
        "PostCode": {
          "description": "Address UK Post Code \r\n\r\nCascade Source: [EmployeeHomeAddress].[Postcode]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Email": {
      "description": "An Email with Ownership.",
      "type": "object",
      "properties": {
        "Ownership": {
          "$ref": "#/definitions/Ownership"
        },
        "Value": {
          "description": "The Email Address. \r\n\r\nCascade Source: \r\n\r\nOwnership = Organization then [Employee].[WorkEmail], Maximum Length: 320\r\n\r\nOwnership = Personal then [EmployeeHomeAddress].[HomeEmail], Maximum Length: 50.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Phone": {
      "description": "A Phone Number with Ownership and Type properties",
      "type": "object",
      "properties": {
        "Ownership": {
          "$ref": "#/definitions/Ownership"
        },
        "Type": {
          "$ref": "#/definitions/PhoneType"
        },
        "Value": {
          "description": "The Phone Number value. \r\n\r\nCascade Source:  \r\n\r\nOwnership = Organization, Type = Landline Then [Employee].[WorkPhone] \r\n\r\nOwnership = Organization, Type = Mobile Then [Employee].[WorkMobilePhoneNumber] \r\n\r\nOwnership = Personal, Type = Landline Then [EmployeeHomeAddress].[Phone] \r\n\r\nOwnership = Personal, Type = Mobile Then [EmployeeHomeAddress].[MobilePhone]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "PhoneType": {
      "description": "The Type of Phone",
      "enum": [
        "Mobile",
        "Landline"
      ],
      "type": "string"
    },
    "Ownership": {
      "description": "The Owner of the entity",
      "enum": [
        "Personal",
        "Organization"
      ],
      "type": "string"
    },
    "JobQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JobModel"
          }
        }
      },
      "additionalProperties": false
    },
    "JobModel": {
      "description": "An HR Employee's Job.",
      "required": [
        "EmployeeId",
        "StartDate"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the Employee of the Job. \r\n\r\nMust exist in Employee Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "JobTitle": {
          "description": "The title of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[JobTitle]",
          "maxLength": 100,
          "type": "string"
        },
        "Classification": {
          "description": "The classification of the Job e.g. Technical, Professional, Managerial. \r\n\r\nCascade Source: [EmployeeJobs].[Classification] translated through the JOBCLASSIFICATION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The start date of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_EffectiveDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The end date of the Job. \r\n\r\nAutomatically Calculated. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_CalculatedEndDate]",
          "type": "string"
        },
        "WorkingCalendar": {
          "description": "The name of the working calendar of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[CalendarName] which comes from [ValidWorkingCalendar].[CalendarName]",
          "maxLength": 50,
          "type": "string"
        },
        "LineManagerId": {
          "description": "The ID of the Employee that is the line manager for this Job. \r\n\r\nMust exist in Employees Service. \r\n\r\nCascade Source: [EmployeeJobs].[WorksForEmployeeId]",
          "maxLength": 36,
          "type": "string"
        },
        "HierarchyNodeId": {
          "description": "The ID of the Employee's Hierarchy node of the Job. \r\n\r\nMust exist in Hierarchy Service.",
          "maxLength": 36,
          "type": "string"
        },
        "Active": {
          "description": "The Job is currently active. \r\n\r\nAutomatically Calculated. \r\n\r\nCascade Source: [EmployeeJobs].[sys_ActiveJob]",
          "type": "boolean"
        },
        "Salary": {
          "format": "double",
          "description": "The salary of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[BasicPay]",
          "type": "number"
        },
        "SalaryWithCurrency": {
          "$ref": "#/definitions/ValueWithCurrency"
        },
        "Contract": {
          "description": "The contract of the Job e.g. Full Time, Part Time. \r\n\r\nCascade Source: [EmployeeJobs].[ContractType] translated through the EMPLOYMENTTYPES system list.",
          "maxLength": 50,
          "type": "string"
        },
        "PayFrequency": {
          "description": "How often the Job's salary will be paid e.g. Monthly, Weekly. \r\n\r\nCascade Source: [EmployeeJobs].[PayFrequency] translated through the PAY FREQ system list.",
          "maxLength": 50,
          "type": "string"
        },
        "PayBasis": {
          "description": "The unit of measurement the salary is specified against e.g. Yearly, Hourly. \r\n\r\nCascade Source: [EmployeeJobs].[PayBasis] translated through the PAY BASIS system list.",
          "maxLength": 50,
          "type": "string"
        },
        "FullTimeEquivalent": {
          "format": "double",
          "description": "The full-time equivalent to a full time employee's hours e.g. 1 = Full Time, 0.5 = Half Hours. \r\n\r\nCascade Source: [EmployeeJobs].[FTE].",
          "type": "number"
        },
        "Position": {
          "description": "The readonly property of employee position. \r\n\r\nCascade Source: [EmployeeJobs].[Postid].",
          "maxLength": 200,
          "type": "string",
          "readOnly": true
        },
        "PositionId": {
          "description": "The ID of the Position. \r\n\r\nCannot be updated once Job is created to prevent breaking change to API functionality. \r\n\r\nMust exist in Position Service.",
          "maxLength": 36,
          "type": "string"
        },
        "ChangeReason": {
          "description": "The reason for the change. \r\n\r\nCascade Source: [EmployeeJobs].[Reason].",
          "maxLength": 50,
          "type": "string"
        },
        "PublicHolidayId": {
          "description": "The ID of the Employee's Public Holiday profile for this Job. \r\n\r\nCannot be updated once Job is created to prevent breaking change to API functionality. \r\n\r\nMust exist in Public Holiday Service.",
          "maxLength": 36,
          "type": "string"
        },
        "PublicHoliday": {
          "description": "The readonly property of public holiday. \r\n\r\nCascade Soruce: [EmployeeJobs].[HolidayLocation].",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "WorkingPatternId": {
          "description": "The ID of the Employee's Working Pattern for this Job. \r\n\r\nCannot be updated once Job is created to prevent breaking change to API functionality. \r\n\r\nMust exist in Working Pattern Service.",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "PayGrade": {
          "description": "The pay grade name assigned to this job. \r\n\r\nCascade Source: [EmployeeJobs].[PayGrade] which comes from [ValidPayGrade].[Grade].",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "SpinalPoint": {
          "format": "int32",
          "description": "The readonly property of pay spinal point. \r\n\r\nCascade Source: [EmployeeJobs].[SpinalPoint].",
          "type": "integer",
          "readOnly": true
        },
        "NextIncrementDate": {
          "format": "date-time",
          "description": "The next increment date.  \r\n\r\nCascade Source: [EmployeeJobs].[IncrementDate].",
          "type": "string"
        },
        "TimesheetLocation": {
          "description": "The timesheet location. \r\n\r\nCascade Source: [EmployeeJobs].[TimesheetLocation].",
          "maxLength": 50,
          "type": "string"
        },
        "TimesheetRuleSet": {
          "description": "The readonly property of time sheet rule set. \r\n\r\nCascade Source: [EmployeeJobs].[TimesheetRuleSetID].",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "TimesheetLunchDuration": {
          "description": "The time set lunch duration. \r\n\r\nValid Values: '20', '30', '60' or null. \r\n\r\nCascade Source: [EmployeeJobs].[LunchDuration].",
          "type": "string"
        },
        "AutoEnrolmentProfile": {
          "description": "The readonly property of automatic enrolment profiles. \r\n\r\nCascade Source: [EmployeeJobs].[AutoEnrolmentProfile].",
          "maxLength": 200,
          "type": "string",
          "readOnly": true
        },
        "ExpenseSubmissionFrequency": {
          "description": "The expense submission frequency. \r\n\r\nCascade Source: [EmployeeJobs].[ExpenseSubmissionFrequency].",
          "maxLength": 50,
          "type": "string"
        },
        "CostCentre": {
          "description": "The cost centre. \r\n\r\nCascade Source: [EmployeeJobs].[CostCentre].",
          "maxLength": 50,
          "type": "string"
        },
        "JobFamily": {
          "description": "The job family. \r\n\r\nCascade Source: [EmployeeJobs].[JobFamily].",
          "maxLength": 50,
          "type": "string"
        },
        "ApprenticeUnder25": {
          "description": "The flag to indicate if the employee is an apprentice under 25. \r\n\r\nCascade Source: [EmployeeJobs].[ApprenticeUnder25].",
          "type": "boolean"
        },
        "ApprenticeshipEndDate": {
          "format": "date-time",
          "description": "The end date of the apprenticeship. \r\n\r\nCascade Source: [EmployeeJobs].[ApprenticeshipEndDate].",
          "type": "string"
        },
        "ContractEndDate": {
          "format": "date-time",
          "description": "The end date of the contract. \r\n\r\nCascade Source: [EmployeeJobs].[ContractEndDate].",
          "type": "string"
        },
        "ReportsToPost": {
          "description": "The readonly property of reports to post. \r\n\r\nCascade Source: [EmployeeJobs].[ReportsToPost].",
          "maxLength": 200,
          "type": "string",
          "readOnly": true
        },
        "NormalHours": {
          "format": "double",
          "description": "The number of normal full-time hours for this job per week. \r\n\r\nCascade Source: [EmployeeJobs].[NormalHours].",
          "type": "number"
        },
        "RealTimeInformationIrregularFrequency": {
          "description": "The real time information of irregular frequency. \r\n\r\nCascade Source: [EmployeeJobs].[RTIIrregularFrequency].",
          "maxLength": 50,
          "type": "string"
        },
        "NoticePeriod": {
          "description": "The notice period. \r\n\r\nCascade Source: [EmployeeJobs].[NoticePeriod].",
          "maxLength": 50,
          "type": "string"
        },
        "SourceSystemId": {
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [EmployeeJobs].[RUID]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Job record was created in the Source HR System. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The latest date when the Job record was created or last updated in the Source HR System. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID is generated by the Iris Hr platform and does not relate to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Job was created in the Iris Hr platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris Hr platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Job was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as Iris Hr platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "CreateJobCommand": {
      "required": [
        "EmployeeId",
        "StartDate"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the Employee of the Job. \r\n\r\nMust exist in Employee Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "JobTitle": {
          "description": "The title of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[JobTitle]",
          "maxLength": 100,
          "type": "string"
        },
        "Classification": {
          "description": "The classification of the Job e.g. Technical, Professional, Managerial. \r\n\r\nCascade Source: [EmployeeJobs].[Classification] translated through the JOBCLASSIFICATION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The start date of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_EffectiveDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The end date of the Job. \r\n\r\nAutomatically Calculated. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_CalculatedEndDate]",
          "type": "string"
        },
        "WorkingCalendar": {
          "description": "The name of the working calendar of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[CalendarName] which comes from [ValidWorkingCalendar].[CalendarName]",
          "maxLength": 50,
          "type": "string"
        },
        "LineManagerId": {
          "description": "The ID of the Employee that is the line manager for this Job. \r\n\r\nMust exist in Employees Service. \r\n\r\nCascade Source: [EmployeeJobs].[WorksForEmployeeId]",
          "maxLength": 36,
          "type": "string"
        },
        "HierarchyNodeId": {
          "description": "The ID of the Employee's Hierarchy node of the Job. \r\n\r\nMust exist in Hierarchy Service.",
          "maxLength": 36,
          "type": "string"
        },
        "Active": {
          "description": "The Job is currently active. \r\n\r\nAutomatically Calculated. \r\n\r\nCascade Source: [EmployeeJobs].[sys_ActiveJob]",
          "type": "boolean"
        },
        "Salary": {
          "format": "double",
          "description": "The salary of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[BasicPay]",
          "type": "number"
        },
        "Contract": {
          "description": "The contract of the Job e.g. Full Time, Part Time. \r\n\r\nCascade Source: [EmployeeJobs].[ContractType] translated through the EMPLOYMENTTYPES system list.",
          "maxLength": 50,
          "type": "string"
        },
        "PayFrequency": {
          "description": "How often the Job's salary will be paid e.g. Monthly, Weekly. \r\n\r\nCascade Source: [EmployeeJobs].[PayFrequency] translated through the PAY FREQ system list.",
          "maxLength": 50,
          "type": "string"
        },
        "PayBasis": {
          "description": "The unit of measurement the salary is specified against e.g. Yearly, Hourly. \r\n\r\nCascade Source: [EmployeeJobs].[PayBasis] translated through the PAY BASIS system list.",
          "maxLength": 50,
          "type": "string"
        },
        "FullTimeEquivalent": {
          "format": "double",
          "description": "The full-time equivalent to a full time employee's hours e.g. 1 = Full Time, 0.5 = Half Hours. \r\n\r\nCascade Source: [EmployeeJobs].[FTE].",
          "type": "number"
        },
        "PositionId": {
          "description": "The ID of the Position. \r\n\r\nCannot be updated once Job is created to prevent breaking change to API functionality. \r\n\r\nMust exist in Position Service.",
          "maxLength": 36,
          "type": "string"
        },
        "ChangeReason": {
          "description": "The reason for the change. \r\n\r\nCascade Source: [EmployeeJobs].[Reason].",
          "maxLength": 50,
          "type": "string"
        },
        "PublicHolidayId": {
          "description": "The ID of the Employee's Public Holiday profile for this Job. \r\n\r\nCannot be updated once Job is created to prevent breaking change to API functionality. \r\n\r\nMust exist in Public Holiday Service.",
          "maxLength": 36,
          "type": "string"
        },
        "NextIncrementDate": {
          "format": "date-time",
          "description": "The next increment date.  \r\n\r\nCascade Source: [EmployeeJobs].[IncrementDate].",
          "type": "string"
        },
        "TimesheetLocation": {
          "description": "The timesheet location. \r\n\r\nCascade Source: [EmployeeJobs].[TimesheetLocation].",
          "maxLength": 50,
          "type": "string"
        },
        "TimesheetLunchDuration": {
          "description": "The time set lunch duration. \r\n\r\nValid Values: '20', '30', '60' or null. \r\n\r\nCascade Source: [EmployeeJobs].[LunchDuration].",
          "type": "string"
        },
        "ExpenseSubmissionFrequency": {
          "description": "The expense submission frequency. \r\n\r\nCascade Source: [EmployeeJobs].[ExpenseSubmissionFrequency].",
          "maxLength": 50,
          "type": "string"
        },
        "CostCentre": {
          "description": "The cost centre. \r\n\r\nCascade Source: [EmployeeJobs].[CostCentre].",
          "maxLength": 50,
          "type": "string"
        },
        "JobFamily": {
          "description": "The job family. \r\n\r\nCascade Source: [EmployeeJobs].[JobFamily].",
          "maxLength": 50,
          "type": "string"
        },
        "ApprenticeUnder25": {
          "description": "The flag to indicate if the employee is an apprentice under 25. \r\n\r\nCascade Source: [EmployeeJobs].[ApprenticeUnder25].",
          "type": "boolean"
        },
        "ApprenticeshipEndDate": {
          "format": "date-time",
          "description": "The end date of the apprenticeship. \r\n\r\nCascade Source: [EmployeeJobs].[ApprenticeshipEndDate].",
          "type": "string"
        },
        "ContractEndDate": {
          "format": "date-time",
          "description": "The end date of the contract. \r\n\r\nCascade Source: [EmployeeJobs].[ContractEndDate].",
          "type": "string"
        },
        "NormalHours": {
          "format": "double",
          "description": "The number of normal full-time hours for this job per week. \r\n\r\nCascade Source: [EmployeeJobs].[NormalHours].",
          "type": "number"
        },
        "RealTimeInformationIrregularFrequency": {
          "description": "The real time information of irregular frequency. \r\n\r\nCascade Source: [EmployeeJobs].[RTIIrregularFrequency].",
          "maxLength": 50,
          "type": "string"
        },
        "NoticePeriod": {
          "description": "The notice period. \r\n\r\nCascade Source: [EmployeeJobs].[NoticePeriod].",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UpdateJobCommand": {
      "required": [
        "EmployeeId",
        "StartDate"
      ],
      "type": "object",
      "properties": {
        "JobTitle": {
          "description": "The title of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[JobTitle]",
          "maxLength": 100,
          "type": "string"
        },
        "Classification": {
          "description": "The classification of the Job e.g. Technical, Professional, Managerial. \r\n\r\nCascade Source: [EmployeeJobs].[Classification] translated through the JOBCLASSIFICATION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The start date of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_EffectiveDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The end date of the Job. \r\n\r\nAutomatically Calculated. \r\n\r\nCascade Source: [EmployeeJobs].[SYS_CalculatedEndDate]",
          "type": "string"
        },
        "WorkingCalendar": {
          "description": "The name of the working calendar of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[CalendarName] which comes from [ValidWorkingCalendar].[CalendarName]",
          "maxLength": 50,
          "type": "string"
        },
        "LineManagerId": {
          "description": "The ID of the Employee that is the line manager for this Job. \r\n\r\nMust exist in Employees Service. \r\n\r\nCascade Source: [EmployeeJobs].[WorksForEmployeeId]",
          "maxLength": 36,
          "type": "string"
        },
        "HierarchyNodeId": {
          "description": "The ID of the Employee's Hierarchy node of the Job. \r\n\r\nMust exist in Hierarchy Service.",
          "maxLength": 36,
          "type": "string"
        },
        "Active": {
          "description": "The Job is currently active. \r\n\r\nAutomatically Calculated. \r\n\r\nCascade Source: [EmployeeJobs].[sys_ActiveJob]",
          "type": "boolean"
        },
        "Salary": {
          "format": "double",
          "description": "The salary of the Job. \r\n\r\nCascade Source: [EmployeeJobs].[BasicPay]",
          "type": "number"
        },
        "Contract": {
          "description": "The contract of the Job e.g. Full Time, Part Time. \r\n\r\nCascade Source: [EmployeeJobs].[ContractType] translated through the EMPLOYMENTTYPES system list.",
          "maxLength": 50,
          "type": "string"
        },
        "PayFrequency": {
          "description": "How often the Job's salary will be paid e.g. Monthly, Weekly. \r\n\r\nCascade Source: [EmployeeJobs].[PayFrequency] translated through the PAY FREQ system list.",
          "maxLength": 50,
          "type": "string"
        },
        "PayBasis": {
          "description": "The unit of measurement the salary is specified against e.g. Yearly, Hourly. \r\n\r\nCascade Source: [EmployeeJobs].[PayBasis] translated through the PAY BASIS system list.",
          "maxLength": 50,
          "type": "string"
        },
        "FullTimeEquivalent": {
          "format": "double",
          "description": "The full-time equivalent to a full time employee's hours e.g. 1 = Full Time, 0.5 = Half Hours. \r\n\r\nCascade Source: [EmployeeJobs].[FTE].",
          "type": "number"
        },
        "ChangeReason": {
          "description": "The reason for the change. \r\n\r\nCascade Source: [EmployeeJobs].[Reason].",
          "maxLength": 50,
          "type": "string"
        },
        "NextIncrementDate": {
          "format": "date-time",
          "description": "The next increment date.  \r\n\r\nCascade Source: [EmployeeJobs].[IncrementDate].",
          "type": "string"
        },
        "TimesheetLocation": {
          "description": "The timesheet location. \r\n\r\nCascade Source: [EmployeeJobs].[TimesheetLocation].",
          "maxLength": 50,
          "type": "string"
        },
        "TimesheetLunchDuration": {
          "description": "The time set lunch duration. \r\n\r\nValid Values: '20', '30', '60' or null. \r\n\r\nCascade Source: [EmployeeJobs].[LunchDuration].",
          "type": "string"
        },
        "ExpenseSubmissionFrequency": {
          "description": "The expense submission frequency. \r\n\r\nCascade Source: [EmployeeJobs].[ExpenseSubmissionFrequency].",
          "maxLength": 50,
          "type": "string"
        },
        "CostCentre": {
          "description": "The cost centre. \r\n\r\nCascade Source: [EmployeeJobs].[CostCentre].",
          "maxLength": 50,
          "type": "string"
        },
        "JobFamily": {
          "description": "The job family. \r\n\r\nCascade Source: [EmployeeJobs].[JobFamily].",
          "maxLength": 50,
          "type": "string"
        },
        "ApprenticeUnder25": {
          "description": "The flag to indicate if the employee is an apprentice under 25. \r\n\r\nCascade Source: [EmployeeJobs].[ApprenticeUnder25].",
          "type": "boolean"
        },
        "ApprenticeshipEndDate": {
          "format": "date-time",
          "description": "The end date of the apprenticeship. \r\n\r\nCascade Source: [EmployeeJobs].[ApprenticeshipEndDate].",
          "type": "string"
        },
        "ContractEndDate": {
          "format": "date-time",
          "description": "The end date of the contract. \r\n\r\nCascade Source: [EmployeeJobs].[ContractEndDate].",
          "type": "string"
        },
        "NormalHours": {
          "format": "double",
          "description": "The number of normal full-time hours for this job per week. \r\n\r\nCascade Source: [EmployeeJobs].[NormalHours].",
          "type": "number"
        },
        "RealTimeInformationIrregularFrequency": {
          "description": "The real time information of irregular frequency. \r\n\r\nCascade Source: [EmployeeJobs].[RTIIrregularFrequency].",
          "maxLength": 50,
          "type": "string"
        },
        "NoticePeriod": {
          "description": "The notice period. \r\n\r\nCascade Source: [EmployeeJobs].[NoticePeriod].",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "EmergencyContactQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmergencyContactModel"
          }
        }
      },
      "additionalProperties": false
    },
    "EmergencyContactModel": {
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Name": {
          "description": "Name of the Emergency Contact. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Name]",
          "maxLength": 50,
          "type": "string"
        },
        "Relation": {
          "description": "The Relation of the Emergency Contact to the Employee. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Relation] translated through the RELATION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Address": {
          "$ref": "#/definitions/EmergencyContactAddress"
        },
        "Phones": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.EmergencyContactPhone\">Phone Numbers</see> belonging to the Emergency Contact.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmergencyContactPhone"
          }
        },
        "Primary": {
          "description": "The Emergency Contact is a Primary Contact.\r\nCascade Source: [EmployeeNextOfKinContacts].[PrimaryContact]",
          "type": "boolean"
        },
        "SourceSystemId": {
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[RUID]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Emergency Contact record was created in the Source HR System. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The latest date when the Emergency Contact record was created or last updated in the Source HR System. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "The ID of the HR Emergency Contact. \r\n\r\nThis ID is generated by the Iris HR platform and does not relate to the Cascade Next of Kin ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Emergency Contact was created in the Iris HR platform.",
          "type": "string"
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Emergency Contact was created or last updated.",
          "type": "string"
        },
        "LastModifiedBy": {
          "description": "Not used as Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "EmergencyContactAddress": {
      "description": "The Address of an Emergency Contact.",
      "type": "object",
      "properties": {
        "Address1": {
          "description": "The first line of Emergency Contact Address \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Address1]",
          "maxLength": 50,
          "type": "string"
        },
        "Address2": {
          "description": "The second line of Emergency Contact Address \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Address2]",
          "maxLength": 50,
          "type": "string"
        },
        "Address3": {
          "description": "The third line of Emergency Contact Address \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Address3]",
          "maxLength": 50,
          "type": "string"
        },
        "Address4": {
          "description": "The fourth line of Emergency Contact Address \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Address4]",
          "maxLength": 50,
          "type": "string"
        },
        "PostCode": {
          "description": "Post Code of the Emergency Contact \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Postcode]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "EmergencyContactPhone": {
      "description": "A Phone Number with Ownership and Type properties",
      "type": "object",
      "properties": {
        "Ownership": {
          "$ref": "#/definitions/Ownership"
        },
        "Type": {
          "$ref": "#/definitions/PhoneType"
        },
        "Value": {
          "description": "The Phone Number value. \r\n\r\nCascade Source: \r\n\r\nOwnership = Personal, Type = Landline Then [EmployeeNextOfKinContacts].[HomePhone] \r\n\r\nOwnership = Personal, Type = Mobile Then [EmployeeNextOfKinContacts].[Mobile] \r\n\r\nOwnership = Organization, Type = Landline Then [EmployeeNextOfKinContacts].[WorkPhone].",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "CreateEmergencyContactCommand": {
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Name": {
          "description": "Name of the Emergency Contact. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Name]",
          "maxLength": 50,
          "type": "string"
        },
        "Relation": {
          "description": "The Relation of the Emergency Contact to the Employee. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Relation] translated through the RELATION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Address": {
          "$ref": "#/definitions/EmergencyContactAddress"
        },
        "Phones": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.EmergencyContactPhone\">Phone Numbers</see> belonging to the Emergency Contact.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmergencyContactPhone"
          }
        },
        "Primary": {
          "description": "The Emergency Contact is a Primary Contact.\r\nCascade Source: [EmployeeNextOfKinContacts].[PrimaryContact]",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "UpdateEmergencyContactCommand": {
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "Name": {
          "description": "Name of the Emergency Contact. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Name]",
          "maxLength": 50,
          "type": "string"
        },
        "Relation": {
          "description": "The Relation of the Emergency Contact to the Employee. \r\n\r\nCascade Source: [EmployeeNextOfKinContacts].[Relation] translated through the RELATION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Address": {
          "$ref": "#/definitions/EmergencyContactAddress"
        },
        "Phones": {
          "description": "The <see cref=\"T:Iris.Api.Hr.Employee.Domain.Entities.V2.EmergencyContactPhone\">Phone Numbers</see> belonging to the Emergency Contact.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmergencyContactPhone"
          }
        },
        "Primary": {
          "description": "The Emergency Contact is a Primary Contact.\r\nCascade Source: [EmployeeNextOfKinContacts].[PrimaryContact]",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "AssignedPaySchemes": {
      "description": "The Assigned Pay Schemes of an employee",
      "type": "object",
      "properties": {
        "SickPay": {
          "description": "Assigned Sick Pay Scheme \r\n\r\nCascade Source: [Employee].[SickPayScheme] which comes from [ValidSickPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "MaternityPay": {
          "description": "Assigned Maternity Pay Scheme \r\n\r\nCascade Source: [Employee].[MaternityPayScheme] which comes from [ValidStatutoryPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "PaternityPay": {
          "description": "Assigned Paternity Pay Scheme \r\n\r\nCascade Source: [Employee].[PaternityPayScheme] which comes from [ValidStatutoryPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "AdoptionPay": {
          "description": "Assigned Adoption Pay Scheme \r\n\r\nCascade Source: [Employee].[AdoptionPayScheme] which comes from [ValidStatutoryPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "SharedParentalPay": {
          "description": "Assigned Shared Parental Pay Scheme \r\n\r\nCascade Source: [Employee].[SharedParentalPayScheme] which comes from [ValidStatutoryPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "AverageHolidayPay": {
          "description": "Assigned Average Holiday Pay Scheme \r\n\r\nCascade Source: [Employee].[AverageHolidayPayScheme] which comes from [ValidAverageHolidayPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "BereavementPay": {
          "description": "Assigned Bereavement Pay Scheme \r\n\r\nCascade Source: [Employee].[BereavementPayScheme] which comes from [ValidStatutoryPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "NeonatalPay": {
          "description": "Assigned Neonatal Care Pay Scheme \r\n\r\nCascade Source: [Employee].[NeonatalPayScheme] which comes from [ValidStatutoryPayScheme].[SchemeName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "CreateWorkingPatternOverrideComponentCommand": {
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "maxLength": 36,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "\r\n\r\n            Cascade Source: [EmployeeWorkingDays].[StartDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "\r\n\r\n            Cascade Source: [EmployeeWorkingDays].[EndDate]",
          "type": "string"
        },
        "DayOfWeek": {
          "format": "int32",
          "description": "The Day of the Week for the Working Pattern Override Component. \r\n\r\n0 = Sunday, 1 = Monday etc. \r\n\r\nCascade Source: [EmployeeWorkingDays].[DayOfWeek] - 1",
          "type": "integer"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Working Pattern Override Component. \r\n\r\nCascade Source: [EmployeeWorkingDays].[DurationDays]",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Working Pattern Override Component. \r\n\r\nCascade Source: [EmployeeWorkingDays].[Duration]",
          "type": "integer"
        },
        "DayPart": {
          "$ref": "#/definitions/DayPart"
        }
      },
      "additionalProperties": false
    },
    "UpdateWorkingPatternOverrideComponentCommand": {
      "type": "object",
      "properties": {
        "StartDate": {
          "format": "date-time",
          "description": "\r\n\r\n            Cascade Source: [EmployeeWorkingDays].[StartDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "\r\n\r\n            Cascade Source: [EmployeeWorkingDays].[EndDate]",
          "type": "string"
        },
        "DayOfWeek": {
          "format": "int32",
          "description": "The Day of the Week for the Working Pattern Override Component. \r\n\r\n0 = Sunday, 1 = Monday etc. \r\n\r\nCascade Source: [EmployeeWorkingDays].[DayOfWeek] - 1",
          "type": "integer"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Working Pattern Override Component. \r\n\r\nCascade Source: [EmployeeWorkingDays].[DurationDays]",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Working Pattern Override Component. \r\n\r\nCascade Source: [EmployeeWorkingDays].[Duration]",
          "type": "integer"
        },
        "DayPart": {
          "$ref": "#/definitions/DayPart"
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternOverrideComponentModel": {
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "maxLength": 36,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "\r\n\r\n            Cascade Source: [EmployeeWorkingDays].[StartDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "\r\n\r\n            Cascade Source: [EmployeeWorkingDays].[EndDate]",
          "type": "string"
        },
        "DayOfWeek": {
          "format": "int32",
          "description": "The Day of the Week for the Working Pattern Override Component. \r\n\r\n0 = Sunday, 1 = Monday etc. \r\n\r\nCascade Source: [EmployeeWorkingDays].[DayOfWeek] - 1",
          "type": "integer"
        },
        "DayOfWeekLabel": {
          "description": "The Friendly Day Name for the Working Pattern Override Component.",
          "type": "string",
          "readOnly": true
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Working Pattern Override Component. \r\n\r\nCascade Source: [EmployeeWorkingDays].[DurationDays]",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Working Pattern Override Component. \r\n\r\nCascade Source: [EmployeeWorkingDays].[Duration]",
          "type": "integer"
        },
        "DayPart": {
          "$ref": "#/definitions/DayPart"
        },
        "SourceSystemId": {
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [EmployeeWorkingDays].[EmployeeId]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The earliest date when an Employee's Working Calendar Override Components record was created in the Source HR System. \r\n\r\nCascade Source: Earliest of [EmployeeWorkingDays].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The latest date when an Employee's Working Calendar Override Components record was created or last updated in the Source HR System. \r\n\r\nCascade Source: Latest of [EmployeeWorkingDays].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "type": "string"
        },
        "CreatedBy": {
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "type": "string"
        },
        "LastModifiedBy": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternOverrideComponentQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternOverrideComponentModel"
          }
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternOverrideDay": {
      "type": "object",
      "properties": {
        "Date": {
          "format": "date-time",
          "description": "The actual date of this Working Pattern Override Day.",
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Working Pattern Override Day.",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Working Pattern Override Day.",
          "type": "integer"
        },
        "WorkingDayPart": {
          "$ref": "#/definitions/DayPart"
        },
        "WorkingPatternOverrideComponentId": {
          "description": "The Id of the Working Pattern Override Component that generated this Day.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternOverrideModel": {
      "type": "object",
      "properties": {
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Working Pattern Override was created in the Source HR System. \r\n\r\nCascade Source: Earliest [EmployeeWorkingDays].[Sys_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Working Pattern Override was created or last updated in the Source HR System. \r\n\r\nCascade Source: Latest [EmployeeWorkingDays].[Sys_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Days": {
          "description": "The days of the working pattern.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternOverrideDay"
          }
        },
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "type": "string"
        },
        "CreatedBy": {
          "maxLength": 36,
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "type": "string"
        },
        "LastModifiedBy": {
          "maxLength": 36,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "EmployeeCalendarModel": {
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the Employee of the Employee Calendar. \r\n\r\nMust exist in Employee Service.",
          "maxLength": 36,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date of the Employee Calendar.",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date of the Employee Calendar.",
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id.\r\nCascade Source: [Employee].[EmployeeId]",
          "maxLength": 36,
          "type": "string"
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Employee Calendar was created in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string"
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Employee Calendar was created or last updated in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string"
        },
        "Days": {
          "description": "The days of the employee calendar.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmployeeCalendarDay"
          }
        },
        "Id": {
          "description": "This ID is generated by the Iris HR platform and does not relate to the Cascade Employee ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Employee was created in the Iris HR platform.",
          "type": "string"
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Employee was created or last updated.",
          "type": "string"
        },
        "LastModifiedBy": {
          "description": "Not used as Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string"
        },
        "Messages": {
          "description": "Information about what data is included in the Calendar or issues when \r\nretrieving data to populate the Calendar.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "EmployeeCalendarDay": {
      "type": "object",
      "properties": {
        "Date": {
          "format": "date-time",
          "description": "The actual date of this Employee Calendar Day.",
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Employee Calendar Day.",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Employee Calendar Day.",
          "type": "integer"
        },
        "WorkingStartTime": {
          "format": "date-time",
          "description": "The start time of this Working Pattern Day. \r\n\r\nThe date part is ignored.",
          "type": "string"
        },
        "WorkingEndTime": {
          "format": "date-time",
          "description": "The end time of this Working Pattern Day. \r\n\r\nThe date part is ignored.",
          "type": "string"
        },
        "WorkingDayPart": {
          "$ref": "#/definitions/DayPart"
        },
        "IsPublicHoliday": {
          "description": "The Employee Calendar day is a Public Holiday.",
          "type": "boolean"
        },
        "PublicHolidayDescription": {
          "description": "The description of the Public Holiday. \r\n\r\nThis is usually the location of the Public Holiday.",
          "maxLength": 50,
          "type": "string"
        },
        "PublicHolidayId": {
          "description": "",
          "maxLength": 36,
          "type": "string"
        },
        "WorkingPatternId": {
          "description": "",
          "maxLength": 36,
          "type": "string"
        },
        "WorkingPatternOverrideId": {
          "description": "",
          "maxLength": 36,
          "type": "string"
        },
        "AbsenceDays": {
          "description": "The Employee Calendar day Absence Days.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmployeeCalendarDayAbsenceDay"
          }
        }
      },
      "additionalProperties": false
    },
    "EmployeeCalendarDayAbsenceDay": {
      "type": "object",
      "properties": {
        "Id": {
          "description": "The ID of the Absence Day.",
          "maxLength": 36,
          "type": "string"
        },
        "AbsenceId": {
          "description": "The ID of the parent Absence. \r\n\r\nMust exist in the Attendance Absence Service.",
          "type": "string"
        },
        "AbsenceReasonId": {
          "description": "The ID of the Absence Reason.",
          "maxLength": 36,
          "type": "string"
        },
        "AbsenceReasonParentName": {
          "description": "The Name of the Parent Absence Reason.",
          "maxLength": 50,
          "type": "string"
        },
        "EmployeeId": {
          "description": "The ID of the Employee. \r\n\r\nMust exist in the Employees Service.",
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Absence Day.",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Absence Day.",
          "type": "integer"
        },
        "DayPart": {
          "$ref": "#/definitions/DayPart"
        }
      },
      "additionalProperties": false
    },
    "ValueWithCurrency": {
      "description": "A value with its currency code and symbol.",
      "type": "object",
      "properties": {
        "Value": {
          "format": "double",
          "description": "The decimal value. \r\n\r\nCascade Source: See the above Field without Currency Details.",
          "type": "number"
        },
        "CurrencyCode": {
          "description": "The Currency Code. \r\n\r\nCascade Source: [ValidCurrency].[Currency]",
          "maxLength": 50,
          "type": "string"
        },
        "CurrencySymbol": {
          "description": "Cascade Source : [ValidCurrency].[Symbol]",
          "maxLength": 3,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "CreatedEntitiyResponseModel": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UnauthorizedResponseModel": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "log_trace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "NotFoundResponseModel": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "log_trace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "BadRequestResponseModel": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "log_trace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ForbiddenResponseModel": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "log_trace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternModel"
          }
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternModel": {
      "type": "object",
      "properties": {
        "Description": {
          "description": "The description of the Working Pattern.",
          "maxLength": 50,
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id.\r\nCascade Source: [ValidWorkingCalendar].[CalendarName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Working Pattern was created in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Working Pattern was created or last updated in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "Days": {
          "description": "The days of the working pattern.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternDay"
          }
        },
        "Id": {
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternDay": {
      "type": "object",
      "properties": {
        "Date": {
          "format": "date-time",
          "description": "The actual date of this Working Pattern Day.",
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Working Pattern Day.",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Working Pattern Day.",
          "type": "integer"
        },
        "WorkingStartTime": {
          "format": "date-time",
          "description": "The start time of this Working Pattern Day. \r\n\r\nThe date part is ignored.",
          "type": "string"
        },
        "WorkingEndTime": {
          "format": "date-time",
          "description": "The end time of this Working Pattern Day. \r\n\r\nThe date part is ignored.",
          "type": "string"
        },
        "WorkingDayPart": {
          "$ref": "#/definitions/DayPart"
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternComponentsQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternComponentsModel"
          }
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternComponentsModel": {
      "description": "The Components used to construct a Working Pattern.",
      "type": "object",
      "properties": {
        "Description": {
          "description": "The description of the Working Pattern. \r\n\r\nCascade Source: [ValidWorkingCalendar].[CalendarName]",
          "maxLength": 50,
          "type": "string"
        },
        "Days": {
          "description": "The unique Working Days used in the Working Pattern.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternComponentsDay"
          }
        },
        "Periods": {
          "description": "The Periods that make up the Working Pattern. \r\n\r\nOnly one Period can be active on a specific date.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternComponentsPeriod"
          }
        },
        "SourceSystemId": {
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [ValidWorkingCalendar].[CalendarName]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Working Pattern Components record was created in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The latest date when the Working Pattern Components record was created or last updated in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "The ID of the Working Pattern Components. \r\n\r\nThis ID is generated by the Iris HR platform and does not relate to the Cascade Valid Working Calendar Id.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Working Pattern Components were created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Working Pattern Components were created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternComponentsPeriod": {
      "type": "object",
      "properties": {
        "StartDate": {
          "format": "date-time",
          "description": "The start of the Period. \r\n\r\nCascade Source: [ValidWorkingCalendar].[StartDate]",
          "type": "string"
        },
        "StartOnDayOfSequence": {
          "format": "int32",
          "description": "Defines which day of the Sequence to begin on when generating the Working Pattern from the Period. \r\n\r\nCascade Source: ([ValidWorkingCalendar].[StartWeek] * 7) + [ValidWorkingCalendar].[StartDay]",
          "type": "integer"
        },
        "FixedDayOfWeek": {
          "description": "Indicates if the Sequence is mapped directly to the days of the week. \r\n\r\nCascade Source: [ValidWorkingCalendar].[FixedDayOfWeek]",
          "type": "boolean"
        },
        "Sequence": {
          "description": "The Sequence of Days (referenced by Id) that make up the Working Pattern Period.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkingPatternComponentsPeriodSequence"
          }
        },
        "InUse": {
          "description": "Indicates if the Period marked as in use. \r\n\r\nCascade Source: [ValidWorkingCalendar].[InUse]",
          "type": "boolean"
        },
        "SourceSystemId": {
          "format": "int32",
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [ValidWorkingCalendar].[Key]",
          "type": "integer",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternComponentsPeriodSequence": {
      "type": "object",
      "properties": {
        "Sequence": {
          "format": "int32",
          "description": "The position of the day in the Sequence. \r\n\r\nIf FixedDayOfWeek = true Then 0 = Sunday, 1 = Monday etc. \r\n\r\nCascade Source: [ValidWorkingPattern].[Sequence]",
          "type": "integer"
        },
        "DayId": {
          "format": "int32",
          "description": "The Id of the Day in the Sequence. \r\n\r\nCascade Source: [ValidWorkingPeriod].[Key]",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "WorkingPatternComponentsDay": {
      "type": "object",
      "properties": {
        "DayId": {
          "format": "int32",
          "description": "The Id of the Working Day, used when referenced from the Period Sequence. \r\n\r\nCascade Source: [ValidWorkingPeriod].[Key]",
          "type": "integer"
        },
        "SourceSystemId": {
          "format": "int32",
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [ValidWorkingPeriod].[Key]",
          "type": "integer",
          "readOnly": true
        },
        "Description": {
          "description": "The description of the Working Day. \r\n\r\nCascade Source: [ValidWorkingPeriod].[DayName]",
          "maxLength": 50,
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Working Day. \r\n\r\nCascade Source: [ValidWorkingPeriod].[DurationDays]",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Working Day. \r\n\r\nCascade Source: ([ValidWorkingPeriod].[Hours] * 60) + [ValidWorkingPeriod].[Minutes]",
          "type": "integer"
        },
        "WorkingStartTime": {
          "format": "date-time",
          "description": "The working start time of the Working Day. \r\n\r\nThe Date Part is ignored. \r\n\r\nCascade Source: [ValidWorkingPeriod].[StartTime]",
          "type": "string"
        },
        "WorkingEndTime": {
          "format": "date-time",
          "description": "The working end time of the Working Day. \r\n\r\nThe Date Part is ignored. \r\n\r\nCascade Source: [ValidWorkingPeriod].[EndTime]",
          "type": "string"
        },
        "WorkingDayPart": {
          "$ref": "#/definitions/DayPart"
        }
      },
      "additionalProperties": false
    },
    "DayPart": {
      "description": "The parts of days.",
      "enum": [
        "AM",
        "PM",
        "AllDay",
        "None"
      ],
      "type": "string"
    },
    "AbsenceReasonQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AbsenceReasonModel"
          }
        }
      },
      "additionalProperties": false
    },
    "AbsenceReasonModel": {
      "description": "An HR Attendance Absence Reason.",
      "type": "object",
      "properties": {
        "ParentId": {
          "description": "The Parent ID of this Absence Reason. \r\n",
          "maxLength": 36,
          "type": "string"
        },
        "Name": {
          "description": "The Name of this Absence Reason. \r\n\r\nCascade Source: \r\n\r\n[ValidAttendanceCategory].[Category] when ParentID is null; \r\n\r\n[ValidAttendanceTypes].[Type] when ParentID is not null.",
          "maxLength": 50,
          "type": "string"
        },
        "ParentName": {
          "description": "The Name of the Parent Absence Reason. \r\n\r\nCascade Source: [ValidAttendanceCategory].[Category] of the Parent Absence Reason.",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "Holiday": {
          "description": "This Absence Reason represents a Holiday. \r\n\r\nCascade Source: [ValidAttendanceCategory].[Holiday]",
          "type": "boolean"
        },
        "Absent": {
          "description": "This Absence Reason represents an Absence. \r\n\r\nCascade Source: [ValidAttendanceCategory].[Absent]",
          "type": "boolean"
        },
        "Sick": {
          "description": "This Absence Reason represents a Sickness. \r\n\r\nCascade Source: [ValidAttendanceCategory].[Sick]",
          "type": "boolean"
        },
        "StatutoryMaternityPayApplicable": {
          "description": "This Absence Reason has Statutory Maternity Pay. \r\n\r\nCascade Source: [ValidAttendanceCategory].[SMPApplicable]",
          "type": "boolean"
        },
        "StudyExam": {
          "description": "This Absence Reason represents an absence for Study or Exam. \r\n\r\nCascade Source: [ValidAttendanceCategory].[Code] = 96 or 97",
          "type": "boolean"
        },
        "FlexiLeave": {
          "description": "This Absence Reason represents Flexi Leave. \r\n\r\nCascade Source: [ValidAttendanceCategory].[Code] = 11",
          "type": "boolean"
        },
        "Lieu": {
          "description": "This Absence Reason represents Lieu. \r\n\r\nCascade Source: [ValidAttendanceCategory].[Lieu]",
          "type": "boolean"
        },
        "AllowOpenEnded": {
          "description": "This Absence Reason can be Open-Ended. \r\n\r\nCascade Source: ([ValidAttendanceCategory].[Absence] = 1 OR [ValidAttendanceCategory].[Sick] = 1) \r\n\r\nAND [ValidAttendanceCategory].[SMPApplicable] = 0 \r\n\r\nAND ([ValidAttendanceCategory].[Code] = 96 OR [ValidAttendanceCategory].[Code] = 97)",
          "type": "boolean"
        },
        "AllowOverlap": {
          "description": "This Absence Reason can be Overlapped by another Absence Reason or Overlap another Absence Reason when both Absence Reasons are set to true. \r\n\r\nCascade Source: [ValidAttendanceCategory].[IgnoreDateConflict]",
          "type": "boolean"
        },
        "ShowOnCalendar": {
          "description": "Show Absences based on this Absence Reason on the Employee Calendar. \r\n\r\nCascade Source: [ValidAttendanceCategory].[ShowOnPlanner]",
          "type": "boolean"
        },
        "IncludeInBradfordFactor": {
          "description": "This Absence Reason is included in Bradford Factor Calculations. \r\n\r\nCascade Source: [ValidAttendanceCategory].[IncludeInBradfordFactor]",
          "type": "boolean"
        },
        "SourceSystemId": {
          "description": "Source HR System Id.\r\nCascade Source: \r\n\r\nIf the ParentId is null then [ValidAttendanceCategory].[Id]\r\nIf the ParentId is not null then [ValidAttendanceTypes].[Key]\r\nIf Parent.Name = 'Statutory Leave' then [ValidSystemListItem].[SystemListItemId]\r\nNote - Statutory Leave Absence Reasons come from 'Statutory Leave' System List",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Absence Reason record was created in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Absence Reason was created or last updated in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "The ID of the Absence Reason. \r\n\r\nThis field is generated by Iris HR platform and not related to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Absence Reason was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date time when the Absence Reason was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "EmployeeAbsenceReasonModel": {
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The Parent ID of this Absence Reason. \r\n\r\nCascade Source: [ValidAttendanceTypes].[Key].",
          "maxLength": 36,
          "type": "string"
        },
        "AbsenceReasonId": {
          "description": "The Name of this Absence Reason. \r\n\r\nCascade Source: \r\n\r\n[ValidAttendanceCategory].[Category] when ParentID is null; \r\n\r\n[ValidAttendanceTypes].[Type] when ParentID is not null.",
          "maxLength": 36,
          "type": "string"
        },
        "ShowInDays": {
          "description": "The Absence Reason For The Employee should be recorded in Days or not.",
          "type": "boolean"
        },
        "Id": {
          "description": "The ID of the Employee Absence Reason.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Employee Absence Reason was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date time when the Employee Absence Reason was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "AbsenceQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/AbsenceModel"
            }
          }
        }
      },
      "additionalProperties": false
    },
    "AbsenceModel": {
      "description": "An HR Employee's Attendance Absence.",
      "required": [
        "AbsenceReasonId",
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the Employee. \r\n\r\nMust exist in the Employees Service. \r\n\r\nCannot be updated once Absence created.",
          "maxLength": 36,
          "type": "string"
        },
        "AbsenceReasonId": {
          "description": "The Absence Reason ID. \r\n\r\nMust exist in the Attendance Absence Reasons Service. \r\n\r\nWhen updating the Absende Reason Parent Id cannot change.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Narrative": {
          "description": "The Narrative relating to the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[Narrative] if Absence Reason is not Shared Parental Leave\r\n\r\n'Shared Parental Leave - ' + [EmployeeSharedParentalLeave].[LeaveType] + ' - ' + [EmployeeSharedParentalLeave].[WhoseLeaveIsIt] if Absence Reason is Shared Parental Leave",
          "maxLength": 65577,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date of the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[StartDate] if Absence Reason is not Shared Parental Leave\r\n\r\n[EmployeeSharedParentalLeave].[LeaveStartDate] if Absence Reason is Shared Parental Leave",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date of the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[EndDate] if Absence Reason is not Shared Parental Leave\r\n\r\nNull if Opened Ended - Cascade Source: [EmployeeAttendance].[OpenEnded] \r\n\r\n[EmployeeSharedParentalLeave].[LeaveEndDate] if Absence Reason is Shared Parental Leave",
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n \r\nCascade Source: \r\n\r\n[EmployeeAttendance].[RUID] if Absence Reason is not Shared Parental Leave \r\n\r\n[EmployeeSharedParentalLeave].[Ruid] if Absence Reason is Shared Parental Leave",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Absence was created in the Source HR System. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[SYS_EffectiveDate] if Absence Reason is not Shared Parental Leave \r\n\r\n[EmployeeSharedParentalLeave].[SYS_EffectiveDate] if Absence Reason is Shared Parental Leave",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Absence was created or last updated in the Source HR System. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[SYS_ModifiedDate] if Absence Reason is not Shared Parental Leave\r\n\r\n[EmployeeSharedParentalLeave].[SYS_ModifiedDate] if Absence Reason is Shared Parental Leave",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID is generated by the Iris HR platform and does not relate to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Absence was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Absence was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "CreateAbsenceCommand": {
      "required": [
        "AbsenceReasonId",
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the Employee. \r\n\r\nMust exist in the Employees Service. \r\n\r\nCannot be updated once Absence created.",
          "maxLength": 36,
          "type": "string"
        },
        "AbsenceReasonId": {
          "description": "The Absence Reason ID. \r\n\r\nMust exist in the Attendance Absence Reasons Service. \r\n\r\nWhen updating the Absende Reason Parent Id cannot change.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Narrative": {
          "description": "The Narrative relating to the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[Narrative] if Absence Reason is not Shared Parental Leave\r\n\r\n'Shared Parental Leave - ' + [EmployeeSharedParentalLeave].[LeaveType] + ' - ' + [EmployeeSharedParentalLeave].[WhoseLeaveIsIt] if Absence Reason is Shared Parental Leave",
          "maxLength": 65577,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date of the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[StartDate] if Absence Reason is not Shared Parental Leave\r\n\r\n[EmployeeSharedParentalLeave].[LeaveStartDate] if Absence Reason is Shared Parental Leave",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date of the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[EndDate] if Absence Reason is not Shared Parental Leave\r\n\r\nNull if Opened Ended - Cascade Source: [EmployeeAttendance].[OpenEnded] \r\n\r\n[EmployeeSharedParentalLeave].[LeaveEndDate] if Absence Reason is Shared Parental Leave",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UpdateAbsenceCommand": {
      "required": [
        "AbsenceReasonId",
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "AbsenceReasonId": {
          "description": "The Absence Reason ID. \r\n\r\nMust exist in the Attendance Absence Reasons Service. \r\n\r\nWhen updating the Absende Reason Parent Id cannot change.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Narrative": {
          "description": "The Narrative relating to the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[Narrative] if Absence Reason is not Shared Parental Leave\r\n\r\n'Shared Parental Leave - ' + [EmployeeSharedParentalLeave].[LeaveType] + ' - ' + [EmployeeSharedParentalLeave].[WhoseLeaveIsIt] if Absence Reason is Shared Parental Leave",
          "maxLength": 65577,
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date of the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[StartDate] if Absence Reason is not Shared Parental Leave\r\n\r\n[EmployeeSharedParentalLeave].[LeaveStartDate] if Absence Reason is Shared Parental Leave",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date of the Attendance. \r\n\r\nCascade Source: \r\n\r\n[EmployeeAttendance].[EndDate] if Absence Reason is not Shared Parental Leave\r\n\r\nNull if Opened Ended - Cascade Source: [EmployeeAttendance].[OpenEnded] \r\n\r\n[EmployeeSharedParentalLeave].[LeaveEndDate] if Absence Reason is Shared Parental Leave",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "MaternityQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/MaternityModel"
            }
          }
        }
      },
      "additionalProperties": false
    },
    "MaternityModel": {
      "description": "An HR Employee's Attendance Maternity.",
      "type": "object",
      "properties": {
        "FormReceivedDate": {
          "format": "date-time",
          "description": "The date that certificate (form MAT B1) was received by the employer. \r\n\r\nCascade Source: [EmployeeMaternity].[MAT1BReceived]",
          "type": "string"
        },
        "ExpectedDateOfBirth": {
          "format": "date-time",
          "description": "The expected date of birth of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[ExpectedDate]",
          "type": "string"
        },
        "ExpectedWeekOfChildBirthStartDate": {
          "format": "date-time",
          "description": "The date of the Sunday before the date of birth of the child.",
          "type": "string"
        },
        "ExpectedWeekOfChildBirthEndDate": {
          "format": "date-time",
          "description": "The date of the Saturday after the date of birth of the child.",
          "type": "string"
        },
        "ChildDateOfBirth": {
          "format": "date-time",
          "description": "The actual date of birth of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[BabyDOB]",
          "type": "string"
        },
        "ChildName": {
          "description": "The name of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[BabyName]",
          "maxLength": 50,
          "type": "string"
        },
        "NotificationReceivedDate": {
          "format": "date-time",
          "description": "The date that the Employer was notified. \r\n\r\nCascade Source: [EmployeeMaternity].[NotificationReceived]",
          "type": "string"
        },
        "NotifyEmployerByDate": {
          "format": "date-time",
          "description": "Cascade Source: [EmployeeMaternity].[NoticeDate]",
          "type": "string",
          "readOnly": true
        },
        "LeaveStartDate": {
          "format": "date-time",
          "description": "The start date of the Employee's leave. \r\n\r\nCascade Source: [EmployeeMaternity].[StartDate]",
          "type": "string"
        },
        "LeaveEndDate": {
          "format": "date-time",
          "description": "The end date of the Employee's leave.\r\nCascade Source: [EmployeeMaternity].[EndDate]",
          "type": "string"
        },
        "Narrative": {
          "description": "Cascade Source: [EmployeeMaternity].[Notes]",
          "type": "string"
        },
        "EmployeeId": {
          "description": "The Id of the Employee. \r\n\r\nMust exist in the Employee service.",
          "type": "string"
        },
        "AbsenceId": {
          "description": "The Id of the Attendance Absence record. \r\n\r\nMust exist in the Absence service.",
          "type": "string"
        },
        "IntentionToReturnSentDate": {
          "format": "date-time",
          "description": "The date the Employer is notified of the Employee's intention to return to work. \r\n\r\nCascade Source: [EmployeeMaternity].[IntentionToReturnSent]",
          "type": "string"
        },
        "ReturnToWorkIntention": {
          "description": "The Employees intention to return to work after maternity leave. \r\n\r\nCascade Source: [EmployeeMaternity].[IntentionToReturnType] translated through RETURNTOWORK system list.",
          "type": "string"
        },
        "ExpectedReturnDate": {
          "format": "date-time",
          "description": "The date the Employee is expected to return to work. \r\n\r\nCascade Source: [EmployeeMaternity].[IntendedReturnDate]",
          "type": "string"
        },
        "QualifyingWeekStartDate": {
          "format": "date-time",
          "description": "The 15th Week before the Expected Week of child birth start date.",
          "type": "string"
        },
        "QualifyForExtendLeave": {
          "description": "Employee qualifies for externded leave. \r\n\r\nCascade Source: [EmployeeMaternity].[ExtendLeave]",
          "type": "boolean",
          "readOnly": true
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n \r\nCascade Source: [EmployeeMaternity].[RUID]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Maternity was created in the Source HR System.\r\nCascade Source: [EmployeeMaternity].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Maternity was created or last updated in the Source HR System.\r\nCascade Source: [EmployeeMaternity].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID is generated by the Iris HR platform and does not relate to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Maternity was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Maternity was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "PaternityQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/PaternityModel"
            }
          }
        }
      },
      "additionalProperties": false
    },
    "PaternityModel": {
      "description": "An HR Employee's Attendance Paternity.",
      "type": "object",
      "properties": {
        "FormReceivedDate": {
          "format": "date-time",
          "description": "The date that certificate (form MAT B1) was received by the employer. \r\n\r\nCascade Source: [EmployeeMaternity].[MAT1BReceived]",
          "type": "string"
        },
        "ExpectedDateOfBirth": {
          "format": "date-time",
          "description": "The expected date of birth of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[ExpectedDate]",
          "type": "string"
        },
        "ExpectedWeekOfChildBirthStartDate": {
          "format": "date-time",
          "description": "The date of the Sunday before the date of birth of the child.",
          "type": "string"
        },
        "ExpectedWeekOfChildBirthEndDate": {
          "format": "date-time",
          "description": "The date of the Saturday after the date of birth of the child.",
          "type": "string"
        },
        "ChildDateOfBirth": {
          "format": "date-time",
          "description": "The actual date of birth of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[BabyDOB]",
          "type": "string"
        },
        "ChildName": {
          "description": "The name of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[BabyName]",
          "maxLength": 50,
          "type": "string"
        },
        "NotificationReceivedDate": {
          "format": "date-time",
          "description": "The date that the Employer was notified. \r\n\r\nCascade Source: [EmployeeMaternity].[NotificationReceived]",
          "type": "string"
        },
        "NotifyEmployerByDate": {
          "format": "date-time",
          "description": "Cascade Source: [EmployeeMaternity].[NoticeDate]",
          "type": "string",
          "readOnly": true
        },
        "LeaveStartDate": {
          "format": "date-time",
          "description": "The start date of the Employee's leave. \r\n\r\nCascade Source: [EmployeeMaternity].[StartDate]",
          "type": "string"
        },
        "LeaveEndDate": {
          "format": "date-time",
          "description": "The end date of the Employee's leave.\r\nCascade Source: [EmployeeMaternity].[EndDate]",
          "type": "string"
        },
        "Narrative": {
          "description": "Cascade Source: [EmployeeMaternity].[Notes]",
          "type": "string"
        },
        "EmployeeId": {
          "description": "The Id of the Employee. \r\n\r\nMust exist in the Employee service.",
          "type": "string"
        },
        "AbsenceId": {
          "description": "The Id of the Attendance Absence record. \r\n\r\nMust exist in the Absence service.",
          "type": "string"
        },
        "CountryOfStatutoryPaternityPayEntitlement": {
          "description": "The country in which the Employee is entitled to statutory paternity pay. \r\n\r\nCascade Source: [EmployeeMaternity].[SPPCountry] translated through the SPPCountry system list.",
          "type": "string"
        },
        "ConsecutiveWeeksOnly": {
          "description": "The Week 1 and Week 2 start dates are consecutive. \r\n",
          "type": "boolean"
        },
        "Week1StartDate": {
          "format": "date-time",
          "description": "The start of the first week of the Paternity leave.\r\nCascade Source: [EmployeeMaternity].[WeekOneStartDate]",
          "type": "string"
        },
        "Week1EndDate": {
          "format": "date-time",
          "description": "The end of the first week of the Paternity leave.",
          "type": "string"
        },
        "Week2StartDate": {
          "format": "date-time",
          "description": "The start of the second week of the Paternity leave.\r\nCascade Source: [EmployeeMaternity].[WeekTwoStartDate]",
          "type": "string"
        },
        "Week2EndDate": {
          "format": "date-time",
          "description": "The end of the second week of the Paternity leave.",
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n \r\nCascade Source: [EmployeeMaternity].[RUID]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Paternity was created in the Source HR System. \r\n\r\nCascade Source: [EmployeeMaternity].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Paternity was created or last updated in the Source HR System. \r\n\r\nCascade Source: [EmployeeMaternity].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID is generated by the Iris HR platform and does not relate to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Paternity was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Paternity was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "AdoptionQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/AdoptionModel"
            }
          }
        }
      },
      "additionalProperties": false
    },
    "AdoptionModel": {
      "description": "An HR Employee's Attendance Adoption.",
      "type": "object",
      "properties": {
        "FormReceivedDate": {
          "format": "date-time",
          "description": "The date that certificate (form MAT B1) was received by the employer. \r\n\r\nCascade Source: [EmployeeMaternity].[MAT1BReceived]",
          "type": "string"
        },
        "ExpectedDateOfBirth": {
          "format": "date-time",
          "description": "The expected date of birth of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[ExpectedDate]",
          "type": "string"
        },
        "ExpectedWeekOfChildBirthStartDate": {
          "format": "date-time",
          "description": "The date of the Sunday before the date of birth of the child.",
          "type": "string"
        },
        "ExpectedWeekOfChildBirthEndDate": {
          "format": "date-time",
          "description": "The date of the Saturday after the date of birth of the child.",
          "type": "string"
        },
        "ChildDateOfBirth": {
          "format": "date-time",
          "description": "The actual date of birth of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[BabyDOB]",
          "type": "string"
        },
        "ChildName": {
          "description": "The name of the child. \r\n\r\nCascade Source: [EmployeeMaternity].[BabyName]",
          "maxLength": 50,
          "type": "string"
        },
        "NotificationReceivedDate": {
          "format": "date-time",
          "description": "The date that the Employer was notified. \r\n\r\nCascade Source: [EmployeeMaternity].[NotificationReceived]",
          "type": "string"
        },
        "NotifyEmployerByDate": {
          "format": "date-time",
          "description": "Cascade Source: [EmployeeMaternity].[NoticeDate]",
          "type": "string",
          "readOnly": true
        },
        "LeaveStartDate": {
          "format": "date-time",
          "description": "The start date of the Employee's leave. \r\n\r\nCascade Source: [EmployeeMaternity].[StartDate]",
          "type": "string"
        },
        "LeaveEndDate": {
          "format": "date-time",
          "description": "The end date of the Employee's leave.\r\nCascade Source: [EmployeeMaternity].[EndDate]",
          "type": "string"
        },
        "Narrative": {
          "description": "Cascade Source: [EmployeeMaternity].[Notes]",
          "type": "string"
        },
        "EmployeeId": {
          "description": "The Id of the Employee. \r\n\r\nMust exist in the Employee service.",
          "type": "string"
        },
        "AbsenceId": {
          "description": "The Id of the Attendance Absence record. \r\n\r\nMust exist in the Absence service.",
          "type": "string"
        },
        "IntentionToReturnSentDate": {
          "format": "date-time",
          "description": "The date the Employer is notified of the Employee's intention to return to work. \r\n\r\nCascade Source: [EmployeeMaternity].[IntentionToReturnSent]",
          "type": "string"
        },
        "ReturnToWorkIntention": {
          "description": "The Employees intention to return to work after maternity leave. \r\n\r\nCascade Source: [EmployeeMaternity].[IntentionToReturnType] translated through RETURNTOWORK system list.",
          "type": "string"
        },
        "ExpectedReturnDate": {
          "format": "date-time",
          "description": "The date the Employee is expected to return to work. \r\n\r\nCascade Source: [EmployeeMaternity].[IntendedReturnDate]",
          "type": "string"
        },
        "QualifyingWeekStartDate": {
          "format": "date-time",
          "description": "The 15th Week before the Expected Week of child birth start date.",
          "type": "string"
        },
        "QualifyForExtendLeave": {
          "description": "Employee qualifies for externded leave. \r\n\r\nCascade Source: [EmployeeMaternity].[ExtendLeave]",
          "type": "boolean",
          "readOnly": true
        },
        "IsSurrogacyCase": {
          "description": "Is this a Surrogacy case? \r\n\r\nCascade Source: [EmployeeMaternity].[IsSurrogacyCase]",
          "type": "boolean"
        },
        "PlacementDate": {
          "format": "date-time",
          "description": "Cascade Source: [EmployeeMaternity].[PlacementDate]",
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n \r\nCascade Source: [EmployeeMaternity].[RUID]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Adoption was created in the Source HR System. \r\n\r\nCascade Source: [EmployeeMaternity].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Adoption was created or last updated in the Source HR System. \r\n\r\nCascade Source: [EmployeeMaternity].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID is generated by the Iris HR platform and does not relate to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Adoption was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Adoption was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "AbsenceDayQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AbsenceDayModel"
          }
        }
      },
      "additionalProperties": false
    },
    "AbsenceDayModel": {
      "description": "An Attendance Absence Day",
      "required": [
        "AbsenceId",
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "AbsenceId": {
          "description": "The ID of the parent Absence. \r\n\r\nMust exist in the Attendance Absence Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "EmployeeId": {
          "description": "The ID of the Employee. \r\n\r\nMust exist in the Employees Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Date": {
          "format": "date-time",
          "description": "The date of the Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[StartDate]",
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[DurationDays]",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[Duration]",
          "type": "integer"
        },
        "DayPart": {
          "$ref": "#/definitions/DayPart"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[Sequence] \r\n",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Absence Day record was created in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Absence Day was created or last updated in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "The ID of the Absence Day. \r\n\r\nThis field is generated by Iris HR platform and not related to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Absence Day was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date time when the Absence Day was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "CreateAbsenceDayCommand": {
      "required": [
        "AbsenceId",
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "AbsenceId": {
          "description": "The ID of the parent Absence. \r\n\r\nMust exist in the Attendance Absence Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "EmployeeId": {
          "description": "The ID of the Employee. \r\n\r\nMust exist in the Employees Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Date": {
          "format": "date-time",
          "description": "The date of the Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[StartDate]",
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[DurationDays]",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[Duration]",
          "type": "integer"
        },
        "DayPart": {
          "$ref": "#/definitions/DayPart"
        }
      },
      "additionalProperties": false
    },
    "UpdateAbsenceDayCommand": {
      "required": [
        "AbsenceId",
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "Date": {
          "format": "date-time",
          "description": "The date of the Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[StartDate]",
          "type": "string"
        },
        "DurationDays": {
          "format": "double",
          "description": "The duration in days for this Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[DurationDays]",
          "type": "number"
        },
        "DurationMinutes": {
          "format": "int32",
          "description": "The duration in minutes for this Absence Day. \r\n\r\nCascade Source: [EmployeeAttendanceDates].[Duration]",
          "type": "integer"
        },
        "DayPart": {
          "$ref": "#/definitions/DayPart"
        }
      },
      "additionalProperties": false
    },
    "MethodNotAllowedResponseModel": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "log_trace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "EntitlementQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EntitlementModel"
          }
        }
      },
      "additionalProperties": false
    },
    "EntitlementModel": {
      "description": "An Employee's Attendance Entitlement.",
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "maxLength": 36,
          "type": "string"
        },
        "AbsenceReasonId": {
          "description": "The Absence Reason ID. \r\n\r\nMust exist in the Absence Reason Service.",
          "maxLength": 36,
          "type": "string"
        },
        "EntitlementYearName": {
          "description": "The Entitlement Year Name. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[EntitlementYearName]",
          "maxLength": 50,
          "type": "string"
        },
        "Open": {
          "description": "The status of Open indicates whether the entitlement is active. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[Open]",
          "type": "boolean"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date of this Entitlement. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[StartDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date of this Entitlement. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[EndDate]",
          "type": "string"
        },
        "Narrative": {
          "description": "The optional description of this Entitlement. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[Narrative]",
          "maxLength": 3524,
          "type": "string"
        },
        "BaseDays": {
          "format": "double",
          "description": "The number of Base Entitlement Days. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[BaseEntitlementDays]",
          "type": "number"
        },
        "BaseMinutes": {
          "format": "int32",
          "description": "The number of Base Entitlement Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[BaseEntitlement]",
          "type": "integer"
        },
        "CarryDays": {
          "format": "double",
          "description": "The number of Carry Days allowed. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[CarryDays]",
          "type": "number"
        },
        "CarryMinutes": {
          "format": "int32",
          "description": "The number of Carry Minutes allowed. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[Carry]",
          "type": "integer"
        },
        "CarryUseByDate": {
          "format": "date-time",
          "description": "The date when Carry Days should be used by. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[CarryUsebyDays]",
          "type": "string"
        },
        "CarryLostDays": {
          "format": "double",
          "description": "The number of Carry Days lost. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[CarryLostDays]",
          "type": "number"
        },
        "CarryLostMinutes": {
          "format": "int32",
          "description": "The number of Carry Minutes lost. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[CarryLost]",
          "type": "integer"
        },
        "ManualAdjustmentDays": {
          "format": "double",
          "description": "The number of Manual Adjustment Days. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[ManualAdjustmentDays]",
          "type": "number"
        },
        "ManualAdjustmentMinutes": {
          "format": "int32",
          "description": "The number of Manual Adjustment Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[ManualAdjustment]",
          "type": "integer"
        },
        "ServiceLengthAdjustmentDays": {
          "format": "double",
          "description": "The number of Adjustment Days due to service length. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[LOSDays]",
          "type": "number"
        },
        "ServiceLengthAdjustmentMinutes": {
          "format": "int32",
          "description": "The number of Adjustment Minutes due to service length. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[LOS]",
          "type": "integer"
        },
        "NewStarterAdjustmentDays": {
          "format": "double",
          "description": "The number of New Starter Adjustment Days. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[NewStarterDays]",
          "type": "number"
        },
        "NewStarterAdjustmentMinutes": {
          "format": "int32",
          "description": "The number of New Starter Adjustment Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[NewStarter]",
          "type": "integer"
        },
        "LeaverAdjusmentDays": {
          "format": "double",
          "description": "The number of Leaver Adjustment Days. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[LeaverAdjustmentDays]",
          "type": "number"
        },
        "LeaverAdjusmentMinutes": {
          "format": "int32",
          "description": "The number of Leaver Adjustment Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[LeaverAdjustment]",
          "type": "integer"
        },
        "LeaverAdjustmentDays": {
          "format": "double",
          "description": "The number of Leaver Adjustment Days. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[LeaverAdjustmentDays]",
          "type": "number"
        },
        "LeaverAdjustmentMinutes": {
          "format": "int32",
          "description": "The number of Leaver Adjustment Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[LeaverAdjustment]",
          "type": "integer"
        },
        "PartTimeAdjustmentDays": {
          "format": "double",
          "description": "The number of Part Time Adjustment Days. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[PTProrataDays]",
          "type": "number"
        },
        "PartTimeAdjustmentMinutes": {
          "format": "int32",
          "description": "The number of Part Time Adjustment Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[PTProrata]",
          "type": "integer"
        },
        "BankHolidayAdjustmentDays": {
          "format": "double",
          "description": "The number of Bank Holiday Adjustment Day. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[BHProrataDays]",
          "type": "number"
        },
        "BankHolidayAdjustmentMinutes": {
          "format": "int32",
          "description": "The number of Bank Holiday Adjustment Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[BHProrata]",
          "type": "integer"
        },
        "BuySellDays": {
          "format": "double",
          "description": "The number of Buy Sell Days. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[BuySellDays]",
          "type": "number"
        },
        "BuySellMinutes": {
          "format": "int32",
          "description": "The number of Buy Sell Minutes. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[BuySell]",
          "type": "integer"
        },
        "TotalEntitlementDays": {
          "format": "double",
          "description": "The total Entitlement in days. \r\n\r\n= BaseDays + \r\n\r\n  ServiceLengthAdjustmentDays + \r\n\r\n  NewStarterAdjustmentDays + \r\n\r\n  ManualAdjustmentDays + \r\n\r\n  CarryDays + \r\n\r\n  PartTimeAdjustmentDays + \r\n\r\n  BankHolidayAdjustmentDays + \r\n\r\n  BuySellDays - \r\n\r\n  CarryLostDays + \r\n\r\n  LeaverAdjustmentDays",
          "type": "number"
        },
        "TotalEntitlementMinutes": {
          "format": "int32",
          "description": "The total Entitlement in minutes. \r\n\r\n= BaseMinutes + \r\n\r\n  ServiceLengthAdjustmentMinutes + \r\n\r\n  NewStarterAdjustmentMinutes + \r\n\r\n  ManualAdjustmentMinutes + \r\n\r\n  CarryMinutes + \r\n\r\n  PartTimeAdjustmentMinutes + \r\n\r\n  BankHolidayAdjustmentMinutes + \r\n\r\n  BuySellMinutes - \r\n\r\n  CarryLostMinutes + \r\n\r\n  LeaverAdjustmentMinutes",
          "type": "integer"
        },
        "SourceSystemId": {
          "description": "The Internal ID of the Source HR Product. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[RUID]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Entitlement record was created in the Source HR System. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Entitlement record was created or last updated in the Source HR System. \r\n\r\nCascade Source: [EmployeeAttendanceEntitlementYear].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID is generated by the Iris HR platform and does not relate to the Cascade Employee Entitlement ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Entitlement was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Entitlement was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "BankDetailsQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BankDetailsModel"
          }
        }
      },
      "additionalProperties": false
    },
    "BankDetailsModel": {
      "description": "An HR Employee's Bank Details.",
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "BankName": {
          "description": "Bank Name. \r\n\r\nCascade Source: [EmployeeBank].[BankName]",
          "maxLength": 50,
          "type": "string"
        },
        "BankAddress": {
          "$ref": "#/definitions/BankAddress"
        },
        "AccountName": {
          "description": "Account Name. \r\n\r\nCascade Source: [EmployeeBank].[AccountName]",
          "maxLength": 50,
          "type": "string"
        },
        "AccountNumber": {
          "description": "Account Number. \r\n\r\nCascade Source: [EmployeeBank].[AccountNumber]",
          "maxLength": 50,
          "type": "string"
        },
        "SortCode": {
          "description": "Sort Code. \r\n\r\nCascade Source: [EmployeeBank].[SortCode]",
          "maxLength": 50,
          "type": "string"
        },
        "RollNumber": {
          "description": "Roll Number. \r\n\r\nCascade Source: [EmployeeBank].[RollNumber]",
          "maxLength": 50,
          "type": "string"
        },
        "SourceSystemId": {
          "description": "The Internal ID for the source HR Product. \r\n\r\nCascade Source: [EmployeeBank].[RUID]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Bank details record was created in the Source HR System. \r\n\r\nCascade Source: [EmployeeBank].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The latest date when the Bank details record was created or last updated in the Source HR System. \r\n\r\nCascade Source: Latest of [EmployeeBank].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "The ID of Bank Details. \r\n\r\nThis field is generated by Iris HR platform and not related to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Bank Details was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date time when the Bank Details was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "BankAddress": {
      "description": "Bank Address",
      "type": "object",
      "properties": {
        "Address1": {
          "description": "The first line of Bank Address \r\n\r\nCascade Source: [EmployeeBank].[Address1]",
          "maxLength": 50,
          "type": "string"
        },
        "Address2": {
          "description": "The second line of Bank Address \r\n\r\nCascade Source: [EmployeeBank].[Address2]",
          "maxLength": 50,
          "type": "string"
        },
        "Address3": {
          "description": "The third line of Bank Address \r\n\r\nCascade Source: [EmployeeBank].[Address3]",
          "maxLength": 50,
          "type": "string"
        },
        "Address4": {
          "description": "The fourth line of Bank Address \r\n\r\nCascade Source: [EmployeeBank].[Address4]",
          "maxLength": 50,
          "type": "string"
        },
        "PostCode": {
          "description": "Post Code of the Bank \r\n\r\nCascade Source: [EmployeeBank].[Postcode]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "CreateBankDetailsCommand": {
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The ID of the HR Employee. \r\n\r\nMust exist in the Employee Service.",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "BankName": {
          "description": "Bank Name. \r\n\r\nCascade Source: [EmployeeBank].[BankName]",
          "maxLength": 50,
          "type": "string"
        },
        "BankAddress": {
          "$ref": "#/definitions/BankAddress"
        },
        "AccountName": {
          "description": "Account Name. \r\n\r\nCascade Source: [EmployeeBank].[AccountName]",
          "maxLength": 50,
          "type": "string"
        },
        "AccountNumber": {
          "description": "Account Number. \r\n\r\nCascade Source: [EmployeeBank].[AccountNumber]",
          "maxLength": 50,
          "type": "string"
        },
        "SortCode": {
          "description": "Sort Code. \r\n\r\nCascade Source: [EmployeeBank].[SortCode]",
          "maxLength": 50,
          "type": "string"
        },
        "RollNumber": {
          "description": "Roll Number. \r\n\r\nCascade Source: [EmployeeBank].[RollNumber]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UpdateBankDetailsCommand": {
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "BankName": {
          "description": "Bank Name. \r\n\r\nCascade Source: [EmployeeBank].[BankName]",
          "maxLength": 50,
          "type": "string"
        },
        "BankAddress": {
          "$ref": "#/definitions/BankAddress"
        },
        "AccountName": {
          "description": "Account Name. \r\n\r\nCascade Source: [EmployeeBank].[AccountName]",
          "maxLength": 50,
          "type": "string"
        },
        "AccountNumber": {
          "description": "Account Number. \r\n\r\nCascade Source: [EmployeeBank].[AccountNumber]",
          "maxLength": 50,
          "type": "string"
        },
        "SortCode": {
          "description": "Sort Code. \r\n\r\nCascade Source: [EmployeeBank].[SortCode]",
          "maxLength": 50,
          "type": "string"
        },
        "RollNumber": {
          "description": "Roll Number. \r\n\r\nCascade Source: [EmployeeBank].[RollNumber]",
          "maxLength": 50,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Operation": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "op": {
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "value": { }
      },
      "additionalProperties": false
    },
    "OperationType": {
      "enum": [
        "Add",
        "Remove",
        "Replace",
        "Move",
        "Copy",
        "Test",
        "Invalid"
      ],
      "type": "string"
    },
    "ConflictResponseModel": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "log_trace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "BenefitQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BenefitModel"
          }
        }
      },
      "additionalProperties": false
    },
    "CreateBenefitCommand": {
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The EmployeeId. \r\n\r\nCascade Source: [EmployeeBenefits].[EmployeeId]",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Type": {
          "description": "The Type. \r\n\r\nCascade Source: [EmployeeBenefits].[Code]",
          "maxLength": 50,
          "type": "string"
        },
        "Description": {
          "description": "The Description. \r\n\r\nCascade Source: [EmployeeBenefits].[Notes]",
          "maxLength": 4805,
          "type": "string"
        },
        "Value": {
          "format": "double",
          "description": "The Value of the Benefit. \r\n\r\nCascade Source: [EmployeeBenefits].[Value]",
          "type": "number"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date. \r\n\r\nCascade Source: [EmployeeBenefits].[StartDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date. \r\n\r\nCascade Source: [EmployeeBenefits].[EndDate]",
          "type": "string"
        },
        "P11DValue": {
          "format": "double",
          "description": "The P11DValue of the Benefit. \r\n\r\nCascade Source: [EmployeeBenefits].[P11DValue]",
          "type": "number"
        },
        "Suspended": {
          "description": "The Suspended value. \r\n\r\nCascade Source: [EmployeeBenefits].[Suspended]",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "UpdateBenefitCommand": {
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "Type": {
          "description": "The Type. \r\n\r\nCascade Source: [EmployeeBenefits].[Code]",
          "maxLength": 50,
          "type": "string"
        },
        "Description": {
          "description": "The Description. \r\n\r\nCascade Source: [EmployeeBenefits].[Notes]",
          "maxLength": 4805,
          "type": "string"
        },
        "Value": {
          "format": "double",
          "description": "The Value of the Benefit. \r\n\r\nCascade Source: [EmployeeBenefits].[Value]",
          "type": "number"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date. \r\n\r\nCascade Source: [EmployeeBenefits].[StartDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date. \r\n\r\nCascade Source: [EmployeeBenefits].[EndDate]",
          "type": "string"
        },
        "P11DValue": {
          "format": "double",
          "description": "The P11DValue of the Benefit. \r\n\r\nCascade Source: [EmployeeBenefits].[P11DValue]",
          "type": "number"
        },
        "Suspended": {
          "description": "The Suspended value. \r\n\r\nCascade Source: [EmployeeBenefits].[Suspended]",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "BenefitModel": {
      "description": "An HR Employee's Benefits.",
      "required": [
        "EmployeeId"
      ],
      "type": "object",
      "properties": {
        "EmployeeId": {
          "description": "The EmployeeId. \r\n\r\nCascade Source: [EmployeeBenefits].[EmployeeId]",
          "maxLength": 36,
          "minLength": 1,
          "type": "string"
        },
        "Type": {
          "description": "The Type. \r\n\r\nCascade Source: [EmployeeBenefits].[Code]",
          "maxLength": 50,
          "type": "string"
        },
        "Description": {
          "description": "The Description. \r\n\r\nCascade Source: [EmployeeBenefits].[Notes]",
          "maxLength": 4805,
          "type": "string"
        },
        "Value": {
          "format": "double",
          "description": "The Value of the Benefit. \r\n\r\nCascade Source: [EmployeeBenefits].[Value]",
          "type": "number"
        },
        "ValueWithCurrency": {
          "$ref": "#/definitions/ValueWithCurrency"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The Start Date. \r\n\r\nCascade Source: [EmployeeBenefits].[StartDate]",
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The End Date. \r\n\r\nCascade Source: [EmployeeBenefits].[EndDate]",
          "type": "string"
        },
        "P11DValue": {
          "format": "double",
          "description": "The P11DValue of the Benefit. \r\n\r\nCascade Source: [EmployeeBenefits].[P11DValue]",
          "type": "number"
        },
        "P11DValueWithCurrency": {
          "$ref": "#/definitions/ValueWithCurrency"
        },
        "Suspended": {
          "description": "The Suspended value. \r\n\r\nCascade Source: [EmployeeBenefits].[Suspended]",
          "type": "boolean"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n\r\nCascade Source: [EmployeeBenefits].[Ruid] \r\n",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Benefit was created in the Source HR System.\r\nCascade Source: [EmployeeBenefits].[SYS_EffectiveDate]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Absence was created or last updated in the Source HR System.\r\nCascade Source: [EmployeeBenefits].[SYS_ModifiedDate]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "The ID of the Benefit. \r\n\r\nThis field is generated by Iris HR platform and not related to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Benefit was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "UserDefinedFieldQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserDefinedFieldModel"
          }
        }
      },
      "additionalProperties": false
    },
    "UserDefinedFieldModel": {
      "type": "object",
      "properties": {
        "SourceEntityId": {
          "description": "Source Entity Id. \r\n\r\nCascade Source: [EmployeeId]",
          "maxLength": 36,
          "type": "string"
        },
        "SchemaId": {
          "description": "User Defined Field Schema Id",
          "maxLength": 36,
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n\r\nCascade Source: [Ruid]",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the user defined field record was created in the Source HR System.",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the user defined field record was created or last updated in the Source HR System.",
          "type": "string",
          "readOnly": true
        },
        "Fields": {
          "description": "The list of User Defined Field Data.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserDefinedFieldElement"
          }
        },
        "Schema": {
          "$ref": "#/definitions/UserDefinedFieldSchema"
        },
        "Id": {
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "type": "string"
        },
        "CreatedBy": {
          "maxLength": 36,
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "type": "string"
        },
        "LastModifiedBy": {
          "maxLength": 36,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UserDefinedFieldSchemaQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserDefinedFieldSchemaModel"
          }
        }
      },
      "additionalProperties": false
    },
    "UserDefinedFieldSchemaModel": {
      "type": "object",
      "properties": {
        "SourceEntity": {
          "description": "Source Entity Type",
          "type": "string"
        },
        "ApplicationMetadata": {
          "description": "User Defined Field Schema Metadata.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "CustomFields": {
          "description": "The list of User Defined Field.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserDefinedFieldSchemaElement"
          }
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n\r\nCascade Source: [IntranetPageX].[PageId]",
          "maxLength": 50,
          "type": "string"
        },
        "Id": {
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "type": "string"
        },
        "CreatedBy": {
          "maxLength": 36,
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "type": "string"
        },
        "LastModifiedBy": {
          "maxLength": 36,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "MetadataElement": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Metadata item name.",
          "type": "string"
        },
        "Value": {
          "description": "Metadata item value.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UserDefinedFieldSchemaElement": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "User Defined Field Name. \r\n\r\nCascade Source: [IntranetPageXLayout].[Name]",
          "type": "string"
        },
        "Label": {
          "description": "User Defined Field Display Label. \r\n\r\nCascade Source: [IntranetPageXLayout].[Label]",
          "type": "string"
        },
        "ControlType": {
          "description": "User Defined Field Control Type. \r\n\r\nCascade Source: [IntranetPageXLayout].[ControlType]",
          "type": "string"
        },
        "ValidList": {
          "description": "User Defined Field Valid value list. \r\n\r\nCascade Source: [IntranetPageXLayout].[ValidList]",
          "type": "string"
        },
        "Hidden": {
          "description": "Whether User Defined Field is hidden. \r\n\r\nCascade Source: [IntranetPageXLayout].[Hidden]",
          "type": "boolean"
        },
        "ReadOnly": {
          "description": "Whether User Defined Field is read only. \r\n\r\nCascade Source: [IntranetPageXLayout].[ReadOnly]",
          "type": "boolean"
        },
        "Mandatory": {
          "description": "Whether User Defined Field is mandatory. \r\n\r\nCascade Source: [IntranetPageXLayout].[Mandatory]",
          "type": "boolean"
        },
        "Uniqueness": {
          "description": "Whether User Defined Field is unique. \r\n\r\nCascade Source: [IntranetPageXLayout].[Unique]",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "UserDefinedFieldElement": {
      "type": "object",
      "properties": {
        "Name": {
          "description": "Metadata item name.",
          "type": "string"
        },
        "Value": {
          "description": "Metadata item value.",
          "type": "string"
        },
        "Schema": {
          "$ref": "#/definitions/UserDefinedFieldSchemaElement"
        }
      },
      "additionalProperties": false
    },
    "UserDefinedFieldSchema": {
      "description": "User Defined Field Schema",
      "type": "object",
      "properties": {
        "SourceEntity": {
          "description": "Source Entity Type",
          "type": "string"
        },
        "ApplicationMetadata": {
          "description": "User Defined Field Schema Metadata.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "CustomFields": {
          "description": "The list of User Defined Field.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserDefinedFieldSchemaElement"
          }
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n\r\nCascade Source: [IntranetPageX].[PageId]",
          "maxLength": 50,
          "type": "string"
        },
        "Id": {
          "description": "The Id of User Defined Field Schema",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the User Defined Field Schema was created in the Iris HR platform.",
          "type": "string"
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date time when the User Defined Field Schema was created or last updated.",
          "type": "string"
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "PositionQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PositionModel"
          }
        }
      },
      "additionalProperties": false
    },
    "PositionModel": {
      "type": "object",
      "properties": {
        "JobTitle": {
          "description": "The Job Title for this Position. \r\n\r\nCascade Source:[ValidPosts].[JobTitle]",
          "maxLength": 100,
          "type": "string"
        },
        "ShortJobTitle": {
          "description": "A shorter version of the Position's Job Title. \r\n\r\nCascade Source: [ValidPosts].[ShortJobTitle]",
          "maxLength": 50,
          "type": "string"
        },
        "ParentId": {
          "description": "The ID of the Position that Jobs based on this Position Report To. \r\n\r\nMust exist in the Positions Service. \r\n\r\nCascade Source: [ValidPosts].[PostReportsTo]",
          "maxLength": 36,
          "type": "string"
        },
        "ParentName": {
          "description": "The Name of the Position that Jobs based on this Position Report To. \r\n\r\nCascadeSource: [ValidPosts].[PostReportsTo]",
          "maxLength": 200,
          "type": "string"
        },
        "DisplayId": {
          "description": "The Display ID for this Position. \r\n\r\nCascade Source: [ValidPost].[PostId]",
          "type": "string"
        },
        "HierarchyNodeId": {
          "description": "The Id of the Hierarchy Node for the Position.\r\nMust exist in Hierarchy Service. \r\n",
          "type": "string"
        },
        "Contract": {
          "description": "The Contract for this Position e.g. Full Time, Part Time. \r\n\r\nCascade Source: [ValidPosts].[ContractType] translated through the EMPLOYMENTTYPES system list.",
          "maxLength": 50,
          "type": "string"
        },
        "Classification": {
          "description": "The classification for this Position e.g. Technical, Professional, Managerial. \r\n\r\nCascade Source: [ValidPosts].[Classification] translated through the JOBCLASSIFICATION system list.",
          "maxLength": 50,
          "type": "string"
        },
        "PayGrade": {
          "description": "The pay grade name assigned for this Position. \r\n\r\nCascade Source: [ValidPosts].[PayGrade] which comes from [ValidPayGrade].[Grade]",
          "maxLength": 50,
          "type": "string"
        },
        "GradeHours": {
          "format": "double",
          "description": "The working house associated with the assigned Pay Grade. \r\n\r\nCascade Source: [ValidPosts].[GradeHours]",
          "type": "number"
        },
        "NormalHours": {
          "format": "double",
          "description": "Normal working hours for this Position. \r\n\r\nCascade Source: [ValidPosts].[NormalHours]",
          "type": "number"
        },
        "WorkingPatternName": {
          "description": "The name of the Working Pattern for this Position. \r\n\r\nCascade Source: [ValidPosts].[WorkingCalendar] which comes from [ValidWorkingCalendar].[CalendarName]",
          "maxLength": 50,
          "type": "string"
        },
        "WorkingPatternId": {
          "description": "The ID of the Working Pattern of the Position. \r\n\r\nMust exist in Working Pattern Service.",
          "type": "string"
        },
        "StartDate": {
          "format": "date-time",
          "description": "The start date of when the Position can be assigned. \r\n\r\nLeave null for unrestricted start. \r\n\r\nCascade Source: [ValidPosts].[StartDate]",
          "type": "string"
        },
        "StartReason": {
          "description": "The reason for starting the Position. \r\n\r\nCascade source: [ValidPosts].[StartReason]",
          "maxLength": 50,
          "type": "string"
        },
        "EndDate": {
          "format": "date-time",
          "description": "The end date of when the Position can be assigned. \r\n\r\nLeave null for unrestricted end. \r\n\r\nCascade Source: [ValidPosts].[EndDate]",
          "type": "string"
        },
        "EndReason": {
          "description": "The reason for ending the Position. \r\n\r\nCascade Source: [ValidPosts].[EndReason]",
          "maxLength": 50,
          "type": "string"
        },
        "Temporary": {
          "description": "Is the Position temporary? \r\n\r\nCascade Source: [ValidPosts].[TemporaryPost]",
          "type": "boolean"
        },
        "Type": {
          "description": "The Position usability Type. \r\n\r\nCascade Source: [ValidPosts].[ShareType]",
          "type": "string"
        },
        "Capacity": {
          "format": "double",
          "description": "The number of Employees that can be assigned to this Position. \r\n\r\nCascade Source: [ValidPosts].[Positions]",
          "type": "number"
        },
        "TotalHours": {
          "format": "double",
          "description": "The number of person hours the Position uses. \r\n\r\nCascade Source: [ValidPosts].[TotalHours]",
          "type": "number"
        },
        "JobFamily": {
          "description": "The job family of this Position. \r\n\r\nCascade Source: [ValidPosts].[JobFamily] translated through the Job Family system list.",
          "maxLength": 50,
          "type": "string"
        },
        "SourceSystemId": {
          "format": "int32",
          "description": "Source HR System Id. \r\n\r\nCascade Source: [ValidPosts].[key]",
          "type": "integer"
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Position was created in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string"
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Position was created or last updated in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string"
        },
        "Id": {
          "description": "The ID of the Position. \r\n\r\nThis id is generated by the Iris Hr platform and does not relate to the Cascade Id.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Position was created in the Iris HR platform.",
          "type": "string"
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string"
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Position was created or last updated.",
          "type": "string"
        },
        "LastModifiedBy": {
          "description": "Not used as Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "HierarchyNodeQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HierarchyNodeModel"
          }
        }
      },
      "additionalProperties": false
    },
    "HierarchyNodeModel": {
      "description": "The Hierarchy node.",
      "type": "object",
      "properties": {
        "ParentId": {
          "description": "The Parent ID of this Hierarchy node. \r\n\r\nMust exist in the Hierarchy Service.",
          "maxLength": 36,
          "type": "string"
        },
        "Level": {
          "format": "int32",
          "description": "The Level of the Hierarchy node. \r\n\r\nCascade Source: [ValidHierarchyX].[level]",
          "type": "integer"
        },
        "Title": {
          "description": "The Title of this Hierarchy node. \r\n\r\nCascade Source: [ValidHierarchyX].[name]",
          "maxLength": 50,
          "type": "string"
        },
        "Disabled": {
          "description": "Hierarchy node is disabled. \r\n\r\nCascade Source: [ValidHierarchyX].[disabled]",
          "type": "boolean"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n\r\nCascade Source: [ValidHierarchyX].[HierarchyNode] \r\n",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Hierarchy node record was created in the Source HR System. \r\n\r\nCascade Source: [ValidHierarchyX].[createdon]",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Hierarchy node record was created or last updated in the Source HR System. \r\n\r\nCascade Source: [ValidHierarchyX].[disabledon] if exists else [ValidHierachyX].[createdon]",
          "type": "string",
          "readOnly": true
        },
        "Id": {
          "description": "This ID of the Hierarchy node. \r\n\r\nThis field is generated by Iris HR platform and not related to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date time when the Hierarchy node was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date time when the Hierarchy node was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users at the moment.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "PublicHolidayQueryModel": {
      "type": "object",
      "properties": {
        "@odata.context": {
          "type": "string"
        },
        "@odata.count": {
          "format": "int32",
          "type": "integer"
        },
        "@odata.nextlink": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PublicHolidayModel"
          }
        }
      },
      "additionalProperties": false
    },
    "PublicHolidayModel": {
      "type": "object",
      "properties": {
        "Description": {
          "description": "The description of the Public Holiday. \r\n\r\nThis is usually the location of the Public Holiday. \r\n\r\nCascade Source: [ValidBankHolidays].[HolidayLocation]",
          "maxLength": 50,
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id.\r\nCascade Source: [ValidBankHolidays].[HolidayLocation]",
          "maxLength": 50,
          "type": "string",
          "readOnly": true
        },
        "SourceSystemCreatedOn": {
          "format": "date-time",
          "description": "The date when the Public Holiday record was created in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "SourceSystemLastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Public Holiday was created or last updated in the Source HR System. \r\n\r\nCascade Source: N/A",
          "type": "string",
          "readOnly": true
        },
        "Days": {
          "description": "A list of Public Holiday Days.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PublicHolidayDay"
          }
        },
        "Id": {
          "description": "This ID is generated by the Iris Hr platform and does not relate to the Cascade ID.",
          "maxLength": 36,
          "type": "string"
        },
        "CreatedOn": {
          "format": "date-time",
          "description": "The date when the Public Holiday was created in the Iris HR platform.",
          "type": "string",
          "readOnly": true
        },
        "CreatedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        },
        "LastModifiedOn": {
          "format": "date-time",
          "description": "The date when the Public Holiday was created or last updated.",
          "type": "string",
          "readOnly": true
        },
        "LastModifiedBy": {
          "description": "Not used as the Iris HR platform has no concept of users.",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "PublicHolidayDay": {
      "type": "object",
      "properties": {
        "Description": {
          "description": "The description of the Public Holiday Day. \r\n\r\nCascade Source: [ValidBankHolidays].[Description]",
          "maxLength": 50,
          "type": "string"
        },
        "Date": {
          "format": "date-time",
          "description": "The date of the Public Holiday Day. \r\n\r\nCascade Source: [ValidBankHolidays].[Date]",
          "type": "string"
        },
        "SourceSystemId": {
          "description": "Source HR System Id. \r\n\r\nCascade Source: [ValidBankHolidays].[key] \r\n",
          "maxLength": 36,
          "type": "string",
          "readOnly": true
        }
      },
      "additionalProperties": false
    }
  },
  "securityDefinitions": {
    "Bearer": {
      "type": "oauth2",
      "flow": "application",
      "tokenUrl": "https://api.iris.co.uk/oauth2/v1/token",
      "description": "This API uses OAuth 2 with the Client Credentials grant flow."
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ],
  "tags": [
    {
      "name": "Employees",
      "description": "Used to retrieve employees' personal information.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "Jobs",
      "description": "Used to retrieve employees' Job information.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "EmergencyContacts",
      "description": "Used to retrieve employees' Next Of Kin Information.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "WorkingPatternOverrideComponents",
      "description": "Used to retrieve employees' Working Pattern Overrides.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "WorkingPatternOverride",
      "description": "Used to retrieve an employee's Working Pattern Overrides by a provided date range.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "Calendar",
      "description": "Used to retrieve an Employee's Calendar over a provided date range.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/employee-calendar.htm"
      }
    },
    {
      "name": "WorkingPatternComponents",
      "description": "Used to retrieve all working patterns",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/working-patterns.htm"
      }
    },
    {
      "name": "WorkingPatterns",
      "description": "Used to retrieve Working Patterns by a provided date range",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/working-patterns.htm"
      }
    },
    {
      "name": "AbsenceReasons",
      "description": "Used to retrieve a list of all Attendance Categories and Types",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/absense-reasons.htm"
      }
    },
    {
      "name": "Absences",
      "description": "Used to retrieve employees' attendance information. <br /> <br />![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br/> The POST, PUT and DELETE request methods are currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "Maternities",
      "description": "Used to retrieve employees' Maternity information. <br /> <br />![Beta](https://img.shields.io/badge/Status-Beta-yellow)",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "Paternities",
      "description": "Used to retrieve employees' Paternity information. <br /> <br />![Beta](https://img.shields.io/badge/Status-Beta-yellow)",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "Adoptions",
      "description": "Used to retrieve employees' Adoption information. <br /> <br />![Beta](https://img.shields.io/badge/Status-Beta-yellow)",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "AbsenceDays",
      "description": "Used to retrieve dates and duration information for attendance records listed on the [/absences](#/Absences) endpoint. <br /><br />![Beta](https://img.shields.io/badge/Status-Beta-yellow)<br /> The POST, PUT and DELETE request methods are currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk.</a>.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/absence-durations.htm"
      }
    },
    {
      "name": "Entitlements",
      "description": "Used to retrieve employees' entitlement figures.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "BankDetails",
      "description": "Used to retrieve employees' bank details. <br /><br />![AccessRestricted](https://img.shields.io/badge/Access-Restricted-yellow) <br /> Follow these [Instructions](https://help-iris.co.uk/hr/cascade/api/getstart/access-bank-details.htm) for access.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "Benefits",
      "description": "Used to retrieve employees' Benefits",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "UserDefinedFields",
      "description": "Used to retrieve user defined fields by schema and source entity. <br /><br />![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API endpoint is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/user-defined-fields-new.htm"
      }
    },
    {
      "name": "UserDefinedFieldSchemas",
      "description": " Used to retrieve user defined field schemas. <br /><br />![Beta](https://img.shields.io/badge/Status-Beta-yellow) <br /> This API endpoint is currently in beta testing. <br /> To gain access to use this method, please contact <a href='mailto:hrapi@iris.co.uk'>hrapi@iris.co.uk</a>.",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/user-defined-fields-new.htm"
      }
    },
    {
      "name": "Positions",
      "description": "Used to retrieve all job positions",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    },
    {
      "name": "Hierarchy",
      "description": "Used to retrieve Companies Hierarchy/Structure",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/hierarchy-overview.htm"
      }
    },
    {
      "name": "PublicHolidays",
      "description": "Used to retrieve Public Holiday profiles",
      "externalDocs": {
        "description": "Service Guide",
        "url": "https://help-iris.co.uk/hr/cascade/api/serviceguides/service-guides-landing.htm"
      }
    }
  ]
}