{
  "openapi": "3.0.1",
  "info": {
    "title": "Staffology Payroll API",
    "contact": {
      "name": "IRIS Customer Support",
      "url": "https://www.staffology.co.uk",
      "email": "hello@staffology.co.uk"
    },
    "version": "v1"
  },
  "paths": {
    "/account/activate": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Activate an Account",
        "description": "New accounts need to be activated to confirm Terms and Conditions have been accepted.",
        "operationId": "ActivateAccount",
        "parameters": [
          {
            "name": "brandCode",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "autoActivate",
            "in": "query",
            "description": "If autoActivate is set to true, the account activation should be automatically performed without any user interaction",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Your account has been activated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      }
    },
    "/account/demo": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Create Demo Employer",
        "description": "Creates a demo employer for the user",
        "operationId": "CreateDemoEmployerAccount",
        "responses": {
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/account/emailaddress": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Change Email Address",
        "description": "The user.PendingEmailAddress will be set to the give address and a new verification email will be sent.\r\nOnce the link in the email is clicked on then the user account will be updated to use the new email address",
        "operationId": "ChangeEmailAddressAccount",
        "parameters": [
          {
            "name": "emailAddress",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Your account has been activated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      }
    },
    "/account": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get Account Details",
        "description": "Returns the details for the authorised account.",
        "operationId": "GetAccount",
        "parameters": [
          {
            "name": "defaults",
            "in": "query",
            "description": "You can leave this empty, it's for internal use only.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "defaultsKey",
            "in": "query",
            "description": "You can leave this empty, it's for internal use only.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      }
    },
    "/account/photo": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Update Photo",
        "description": "Submit an image here and we'll upload it, resize it to 200px squared and set it as the image for your account.",
        "operationId": "UpdatePhotoAccount",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      }
    },
    "/account/profile": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Update Profile",
        "description": "Updates your profile. Only Salutation, FirstName, LastName, JobType, JobTitle, TelephoneNumber, BusinessName, Industry, Address and DisplayPrefs fields are updated.",
        "operationId": "ProfileAccount",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      }
    },
    "/account/invitations": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get Invitations",
        "description": "Returns any pending Invitations for the authorised user.\r\nIf the email address isn't yet verified then the Name displayed in the Item will be the users email address instead of the company name.\r\nInvitations cannot be accepted until the email address for the user is verified.",
        "operationId": "GetInvitationsAccount",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/account/verify": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Re-send Verification Email",
        "description": "Users should receive an email to verify their email address when they first register or if they change their email address.\r\nHowever, this API endpoint can be used to re-send the email.",
        "operationId": "VerifyAccount",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/account/verify/respond": {
      "put": {
        "tags": [
          "Account"
        ],
        "summary": "Verify Email Address",
        "description": "Used to process the link sent in an email to verify an email address.",
        "operationId": "VerifyResponseAccount",
        "parameters": [
          {
            "name": "u",
            "in": "query",
            "description": "The value from the link in the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "k",
            "in": "query",
            "description": "The value from the link in the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "/account/Tenant": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get Tenant",
        "description": "Returns branding details for the specified tenant. This is used by the web app and is unlikely to be used by third-parties.",
        "operationId": "GetTenantAccount",
        "parameters": [
          {
            "name": "tenantId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tenant"
                }
              }
            }
          }
        }
      }
    },
    "/account/employerdefaults": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get EmployerDefaults",
        "description": "Get the EmployerDefaults for the currently authorised User.",
        "operationId": "GetEmployerDefaultsAccount",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerDefaults"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Account"
        ],
        "summary": "Set EmployerDefaults",
        "description": "Set the EmployerDefaults for the currently authorised User.",
        "operationId": "SetEmployerDefaultsAccount",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerDefaults"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerDefaults"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerDefaults"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerDefaults"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerDefaults"
                }
              }
            }
          }
        }
      }
    },
    "/account/useremployers": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "List User Employers",
        "description": "Returns a list of Employers that are associated to the given User",
        "operationId": "GetUserEmployersAccount",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Id of the user you want a list of employers for.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployerItem"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/account/keys": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "List ApiKeys",
        "description": "",
        "operationId": "ListApiKeysAccount",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Create ApiKey",
        "description": "Creates a new APIKey. The only property that's required or used is Name.\r\nA new ApiKey will be generated and returned to you.",
        "operationId": "CreateApiKeyAccount",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Item"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Item"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Item"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Item"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Item"
                }
              }
            }
          }
        }
      }
    },
    "/account/keys/{id}": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get ApiKey",
        "description": "",
        "operationId": "GetApiKeyAccount",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Item"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Account"
        ],
        "summary": "Delete ApiKey",
        "description": "",
        "operationId": "DeleteApiKeyAccount",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/aeemployeeassessment": {
      "post": {
        "tags": [
          "AeAssessment"
        ],
        "summary": "Assess an employee",
        "operationId": "AssessAeAssessment",
        "requestBody": {
          "description": "The request containing all of the data required to perform an assessment",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/create": {
      "post": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Create employee auto enrolment assessment",
        "operationId": "CreateAeEmployeeAssessmentAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request containing all data required for the employee assessment",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentHistoryRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentHistoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentHistoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentHistoryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/aeEmployeeAssessments": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "List employee auto enrolment assessment",
        "operationId": "GetAeEmployeeAssessmentsAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentHistoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/letters/{taxYear}": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Get letters for an employee based on tax year",
        "operationId": "GetEmployeeLettersAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear for which you want to list the pension letters",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AeEmployeeLetterResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/letters/pending": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Get pending letters for an employer",
        "operationId": "GetPendingLettersAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AeEmployeeLetterResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/letters/pending/count": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Get count of pending pension letters for an employer",
        "operationId": "GetPendingLettersCountAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/assess": {
      "post": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Process AE Assessment for Employee during PayRun",
        "operationId": "AssessAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payRunId",
            "in": "query",
            "description": "The Id of the PayRun being assessed",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentHistoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/reenrolmentdates": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Gets a list of re-enrolment dates for the employer",
        "operationId": "GetReenrolmentDatesAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/{id}/letter/email": {
      "post": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Email AeLetter",
        "description": "Send via email letter that needs to be sent to an employee as a result of the assessment.",
        "operationId": "EmailAeLetterAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the AeEmployeeAssessmentHistory",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/{id}/letter/sent": {
      "put": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Mark Letter as Sent",
        "description": "Update an Assessment to mark the letter as sent.\r\nThis is done automatically if you send the letter via email so you'd\r\nonly need to use this is you are printing/posting the letter.",
        "operationId": "MarkAeLetterAsSentAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Assessment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/letters/sent": {
      "put": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Mark All Letters as Sent",
        "description": "Update an Assessments to mark all the letter as sent.\r\nThis is done automatically if you send the letter via email so you'd\r\nonly need to use this is you are printing/posting the letter.",
        "operationId": "MarkAeLettersAsSentAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/{id}/letter": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Get AeLetter",
        "description": "Returns PDF letter that needs to be sent to an employee as a result of the assessment.\r\nThe same ReportResponse model that is used for reports is used here.",
        "operationId": "GetAeLetterAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Assessment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/assessments": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Get Ae Assessments for an employee.",
        "operationId": "GetEmployeeAeAssessmentsHistoryAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AeEmployeeAssessment"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/aeassessments/employees/{employeeId}/aeEmployeeAssessments/roles/{employeeRoleId}": {
      "get": {
        "tags": [
          "AeEmployeeAssessment"
        ],
        "summary": "Gets employee AE assessment for a specific role.",
        "operationId": "GetLatestAeEmployeeAssessmentByRoleAeEmployeeAssessment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeRoleId",
            "in": "path",
            "description": "The Id of the Employee Role",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentHistoryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/analysiscategories": {
      "get": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "List AnalysisCategories",
        "description": "Lists all AnalysisCategories for an Employer.",
        "operationId": "IndexAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list AnalysisCategories",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or AnalysisCategories Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Create AnalysisCategory",
        "description": "Create a new AnalysisCategory for the Employer.",
        "operationId": "CreateAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/analysiscategories/{id}": {
      "get": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Get AnalysisCategory",
        "description": "Gets the AnalysisCategory specified.",
        "operationId": "GetAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the AnalysisCategory belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the AnalysisCategory which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or AnalysisCategory Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Update AnalysisCategory",
        "description": "Updates a AnalysisCategory for the Employer.",
        "operationId": "UpdateAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Delete AnalysisCategory",
        "description": "Deletes the specified AnalysisCategory.",
        "operationId": "DeleteAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/analysiscategories/{analysisCategoryId}/categorycodes": {
      "get": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "List AnalysisCategoryCodes",
        "description": "Lists all AnalysisCategoryCodes for an Category.",
        "operationId": "GetCodesAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "analysisCategoryId",
            "in": "path",
            "description": "The Id of the Category for which you want to list Codes",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Create AnalysisCategoryCode",
        "description": "Create the details of an existing AnalysisCategoryCode.",
        "operationId": "CreateAnalysisCategoryCodeAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Analysis category belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "analysisCategoryId",
            "in": "path",
            "description": "The Analysis category id for  which you want to create code",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/analysiscategories/{analysisCategoryId}/categorycodes/{code}": {
      "get": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Get AnalysisCategoryCode",
        "description": "Gets the AnalysisCategoryCode specified.",
        "operationId": "GetAnalysisCategoryCodeAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "analysisCategoryId",
            "in": "path",
            "description": "The Id of the AnalysisCategory to which the Code belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "description": "The code of the AnalysisCategoryCode you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Delete AnalysisCategoryCode",
        "description": "Deletes the specified AnalysisCategoryCode.",
        "operationId": "DeleteAnalysisCategoryCodeAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "analysisCategoryId",
            "in": "path",
            "description": "The Id of the AnalysisCategory to which the Code belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "description": "The code of the AnalysisCategoryCode you want to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "AnalysisCategory"
        ],
        "summary": "Update AnalysisCategoryCode",
        "description": "Updates the details of an existing AnalysisCategoryCode.",
        "operationId": "UpdateAnalysisCategoryCodeAnalysisCategory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Analysis category belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "analysisCategoryId",
            "in": "path",
            "description": "The Analysis category id for  which you want to update Analysis code",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "description": "The code of the Analysis category code you want to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AnalysisCategoryCodeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/attachmentorders": {
      "post": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Create AttachmentOrder",
        "description": "Creates an AttachmentOrder for the Employee",
        "operationId": "CreateAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "get": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "List AttachmentOrders",
        "description": "Lists all AttachmentOrders for the Employee",
        "operationId": "IndexAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/attachmentorders/{id}": {
      "get": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Get AttachmentOrder",
        "description": "Gets the AttachmentOrder specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "GetAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the AttachmentOrder you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrder"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Update AttachmentOrder",
        "operationId": "UpdateAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the AttachmentOrder you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentOrder"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrder"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Delete AttachmentOrder",
        "description": "Deletes the AttachmentOrder specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "DeleteAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the AttachmentOrder you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/attachmentorders/payments/{taxYear}": {
      "get": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Get Payments",
        "description": "Lists all Payments made to AttachmentOrders for the Employee in the given TaxYear",
        "operationId": "PaymentsAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AttachmentOrderPayment"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/attachmentorders/{id}/documents": {
      "post": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Add Document",
        "description": "Adds document to the AttachmentOrder",
        "operationId": "AddDocumentAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the AttachmentOrder you want to attach documents to",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/attachmentorders/{id}/documents/{documentId}": {
      "delete": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Delete AttachmentOrder Document",
        "description": "Deletes the document specified by the documentId for the AttachmentOrder specified by the Id",
        "operationId": "DeleteDocumentAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "AttachmentOrder"
        ],
        "summary": "Get AttachmentOrder Document",
        "description": "Gets the document specified by the documentId for the AttachmentOrder specified by the Id",
        "operationId": "GetDocumentAttachmentOrder",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/audit": {
      "get": {
        "tags": [
          "Audit"
        ],
        "summary": "Employer Audit Log",
        "operationId": "EmployerAuditListAudit",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Audit logs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "entity",
            "in": "query",
            "description": "Entity type name for which audit log should be retrieved",
            "schema": {
              "$ref": "#/components/schemas/EntityType"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "description": "Id of the entity for which audit log should be retrieved",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "Date from which records should be retrieved",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "Date till records should be retrieved",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Get AE Assessments",
        "description": "Returns all AE Assessments for the Employee specified.",
        "operationId": "ListAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve AE Assessments",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment/assessments": {
      "post": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Assess Employee for AutoEnrolment",
        "description": "Asseses an Employee for AutoEnrolment",
        "operationId": "AssessAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to assess",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment/assessments/{id}": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Get AE Assessment",
        "description": "Returns the specified AeAssessment for the specified Employee",
        "operationId": "GetAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Assessment.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Delete AE Assessment",
        "description": "Deletes the AeAssessment specified by the Id for the Employee specified by the EmployeeId.",
        "operationId": "DeleteAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Assessment.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment/assessments/last": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Get Last AE Assessment",
        "description": "Returns the most recent AeAssessment for an Employee",
        "operationId": "GetLastAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment/assessments/{id}/letter": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Get Letter",
        "description": "Returns either a PDF or HTML (depending on accept header) of the letter that needs to be sent to an employee as a result of the assessment.\r\nThe same ReportResponse model that is used for reports is used here.",
        "operationId": "GetLetterAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Assessment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment/assessments/{id}/letter/email": {
      "post": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Email Letter",
        "description": "Send via email letter that needs to be sent to an employee as a result of the assessment.\r\nThe letter is then marked as having been sent.",
        "operationId": "EmailLetterAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Assessment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/autoenrolment/letters/email": {
      "post": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Email All Letters",
        "description": "",
        "operationId": "EmailAllLettersAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment/assessments/{id}/letter/sent": {
      "put": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Mark Letter as Sent",
        "description": "Update an Assessment to mark the letter as sent.\r\nThis is done automatically if you send the letter via email so you'd\r\nonly need to use this is you are printing/posting the letter.",
        "operationId": "MarkLetterAsSentAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee the assessment is for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Assessment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/autoenrolment/letters/sent": {
      "put": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Mark All Letters as Sent",
        "description": "Update an Assessments to mark all the letter as sent.\r\nThis is done automatically if you send the letter via email so you'd\r\nonly need to use this is you are printing/posting the letter.",
        "operationId": "MarkLettersAsSentAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/autoenrolment/state": {
      "put": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Update State",
        "description": "Updates the AutoEnrolment state for an Employee. \r\nYou would use this API call to process notices such as Opt Out, Opt In, etc.\r\nA new assessment is returned showing the result of the state change.",
        "operationId": "SetStateAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to set the status for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "The AutoEnrolment State to set for the Employee",
            "schema": {
              "$ref": "#/components/schemas/AeEmployeeState"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/AeStatus"
            }
          },
          {
            "name": "stateDate",
            "in": "query",
            "description": "Optional. Will default to the current date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pensionSchemeId",
            "in": "query",
            "description": "Optional. Used to override the default AE Pension. Only valid with states of Enrol, VoluntaryJoiner or OptIn",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "workerGroupId",
            "in": "query",
            "description": "Optional. Used to override the default AE Pension Workergroup. Only valid with states of Enrol, Join or OptIn. Must be provided if a pensionId is being provided.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "startActionAlreadyReported",
            "in": "query",
            "description": "Optional. Set to true if the employee has already been reported to the pension provider as a joiner.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "endActionAlreadyReported",
            "in": "query",
            "description": "Optional. Set to true if the employee has already been reported to the pension provider as a leaver.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "pensionId",
            "in": "query",
            "description": "Optional. The specific Pension UniqueId.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Assessment created successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AeAssessment"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid parameters or state transition"
          },
          "404": {
            "description": "Employee or Employer not found"
          }
        }
      }
    },
    "/employers/{employerId}/autoenrolment/letters/pending/count": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Pending Letters Count",
        "description": "Returns the count of AE Assessments that are awaiting a letter to be sent\r\nand the count of the employees that are awaiting a postponement letter to be sent.",
        "operationId": "PendingLettersCountAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PendingLettersCountResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PendingLettersCountResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PendingLettersCountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/autoenrolment/letters/pending": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Pending Letters",
        "description": "Returns all AE Assessments that are awaiting a letter to be sent",
        "operationId": "PendingLettersAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/autoenrolment/letters/pending/postponement": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Pending Postponement Letters",
        "description": "Returns all employees that are awaiting a postponement letter to be sent.\r\nBecause there is no associated AeAssessment they can't be returned with the other pending letters",
        "operationId": "PendingPostponementLettersAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/autoenrolment/renrol": {
      "get": {
        "tags": [
          "AutoEnrolment"
        ],
        "summary": "Cyclical Re-enrolment",
        "description": "Performs a Cyclical Re-enrolment. All employees that have opted-out or ceased membership  \r\nwill be re-assessed and auto-enrolled if necessary.\r\nThe employers cyclical re-enrolment date will then be updated to the date provided.",
        "operationId": "ReenrolAutoEnrolment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cyclicalReenrolmentDate",
            "in": "query",
            "description": "The new Cyclical Re-enrolment Date for the  Employer",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/{employerId}/employees/AverageHolidayPay/PayHistory": {
      "post": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "Create multiple AverageHolidayPayHistory for an Employer",
        "operationId": "CreateAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryRequest"
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "Success"
          }
        }
      },
      "get": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "Get AverageHolidayPayHistory for Employer",
        "operationId": "GetByEmployerAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayHistoryResponse"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "Update multiple AverageHolidayPayHistory for an Employer",
        "operationId": "UpdateAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryUpdateRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryUpdateRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryUpdateRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayHistoryUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/{employerId}/employees/{employeeId}/AverageHolidayPay/PayHistory/{taxYear}": {
      "get": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "List AverageHolidayPayHistory for Employee",
        "description": "List AverageHistoryPayHistory for the given Employee in the specified TaxYear",
        "operationId": "GetByEmployeeAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Employee Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear for which you want the history.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayHistoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/{employerId}/employees/{employeeId}/AverageHolidayPay/PayHistory/PreviousPaymentDate/{maxPaymentDate}": {
      "get": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "Get previous payment date for an employee before a given date",
        "operationId": "GetPreviousPaymentDateAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "EmployerId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "EmployeeId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "maxPaymentDate",
            "in": "path",
            "description": "MaxPaymentDate",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/{employerId}/employees/AverageHolidayPay/PayHistory/{id}": {
      "delete": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "Delete an AverageHolidayPayHistory record",
        "operationId": "DeleteAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The pay history unique id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/{employerId}/employees/{employeeId}/AverageHolidayPay/PayHistory": {
      "delete": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "Delete all AverageHolidayPayHistory for an Employee",
        "operationId": "DeleteByEmployeeIdAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/{employerId}/employees/AverageHolidayPay/PayHistory/import": {
      "post": {
        "tags": [
          "AverageHolidayPayHistory"
        ],
        "summary": "Import AverageHistoryPayHistory from csv file",
        "description": "Import Pay History from a CSV file.",
        "operationId": "ImportCsvAverageHolidayPayHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "previewOnly",
            "in": "query",
            "description": "Set to true and nothing will be imported but you'll be shown a preview of the data.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/benefits": {
      "post": {
        "tags": [
          "Benefits"
        ],
        "summary": "Create Benefit",
        "description": "Creates a Benefit for the Employee",
        "operationId": "CreateBenefits",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "get": {
        "tags": [
          "Benefits"
        ],
        "summary": "List Benefits",
        "description": "Lists all Benefits for the Employee",
        "operationId": "IndexBenefits",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/benefits/{id}": {
      "get": {
        "tags": [
          "Benefits"
        ],
        "summary": "Get Benefit",
        "description": "Gets the Benefit specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "GetBenefits",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Benefit you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Benefit"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "Benefits"
        ],
        "summary": "Update Benefit",
        "operationId": "UpdateBenefits",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Benefit you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Benefit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Benefit"
                }
              }
            }
          },
          "409": {
            "description": "Conflict"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Benefits"
        ],
        "summary": "Delete Benefit",
        "description": "Deletes the Benefit specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "DeleteBenefits",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Benefit you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/billing/directdebit": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get DirectDebitMandate",
        "description": "Returns the DirectDebitMandate for the authenticated account",
        "operationId": "DirectDebitMandateBilling",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DirectDebitMandate"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Billing"
        ],
        "summary": "Delete DirectDebitMandate",
        "description": "Cancels and deletes the Direct Debit Mandate for the account",
        "operationId": "DeleteDirectDebitMandateBilling",
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/billing/directdebit/setup": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Setup DirectDebitMandate",
        "description": "Returns a Url to redirect a user to in order to start the process of setting up a Direct Debit Mandate.\r\nOnce the process is complete then the user is sent to the URL specified.",
        "operationId": "SetupDirectDebitMandateBilling",
        "parameters": [
          {
            "name": "returnUrl",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/billing/directdebit/confirm": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Confirm Direct Debit Setup",
        "description": "This endpoint is called by an external provider. You will never have to call this endpoint yourself.",
        "operationId": "ConfirmDirectDebitMandateBilling",
        "parameters": [
          {
            "name": "redirect_flow_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/billing/bills": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "List Bills",
        "description": "Returns a list of UsageBills for the authenticated account",
        "operationId": "BillsBilling",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/billing/bill/{id}": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Bill",
        "description": "Returns the specified UsageBill",
        "operationId": "BillBilling",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageBill"
                }
              }
            }
          }
        }
      }
    },
    "/billing/bill/{id}/csv": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Bill CSV",
        "description": "Returns the specified UsageBill as a CSV file",
        "operationId": "BillCsvBilling",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/billing/usage-stats": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get UsageStats Report",
        "description": "Returns usage statistics data for all employers the logged in user has access to for the given date range.\r\nIf either of the dates are not provided then the values are defaulted to the first and last date of the previous calendar month.",
        "operationId": "GetUsageStatsBilling",
        "parameters": [
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/bureau/processors": {
      "get": {
        "tags": [
          "Bureau"
        ],
        "summary": "List Allocated Processors",
        "description": "Returns a list of Users that have one or more Employers allocated to them as the Processor",
        "operationId": "ProcessorUsersBureau",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/bureau/employers": {
      "get": {
        "tags": [
          "Bureau"
        ],
        "summary": "List Employers",
        "description": "Returns a list of Employers.\r\nThis differs from the main Employer list end point in that the metadata included is more relevant to Bureau activities\r\nIt also gives you the ability to filter based on the allocated Processor.\r\nNote: an entry is returned for each PaySchedule. So if the employer has both a Monthly and a Weekly PaySchedule then they'll appear twice",
        "operationId": "EmployersBureau",
        "parameters": [
          {
            "name": "processor",
            "in": "query",
            "description": "The Id of the Processor (User) you want to restrict the list to.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/bureau/settings": {
      "get": {
        "tags": [
          "Bureau"
        ],
        "summary": "Get BureauSettings",
        "description": "Returns the BureauSettings for the Employer",
        "operationId": "GetSettingsBureau",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BureauSettings"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Bureau"
        ],
        "summary": "Update BureauSettings",
        "description": "Updates the BureauSettings for the Employer",
        "operationId": "UpdateSettingsBureau",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/BureauSettings"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BureauSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BureauSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BureauSettings"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BureauSettings"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/bureau/settings/reportpack": {
      "get": {
        "tags": [
          "Bureau"
        ],
        "summary": "Get BureauSettings ReportPack",
        "description": "If a ReportPack is specified in the BureauSettings then it is returned, otherwise an empty ReportPAck is returned",
        "operationId": "GetReportPackBureau",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportPack"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/bureau/settings/processor": {
      "get": {
        "tags": [
          "Bureau"
        ],
        "summary": "Get Processor",
        "description": "If a Processor is specified in the BureauSettings then it is returned as a User, otherwise a 404 is returned",
        "operationId": "GetProcessorUserBureau",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis300/{taxYear}": {
      "get": {
        "tags": [
          "Cis300"
        ],
        "summary": "List Cis300",
        "description": "Returns all Cis300s for the given tax year.",
        "operationId": "ListCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Cis300"
        ],
        "summary": "Create Cis300",
        "description": "A Cis300 is automatically created for each Tax Month that you pay a Subcontractor.\r\nYou would only manually create one if you are intending to submit a nil return.",
        "operationId": "CreateCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis300/{taxYear}/{id}": {
      "put": {
        "tags": [
          "Cis300"
        ],
        "summary": "Update Cis300",
        "description": "Updates an existing Cis300.",
        "operationId": "UpdateCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Cis300"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Cis300"
        ],
        "summary": "Get Cis300",
        "description": "Retrieves a Cis300",
        "operationId": "GetCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Cis300"
        ],
        "summary": "Delete Cis300",
        "description": "Not implemented, CIS300s cannot be deleted",
        "operationId": "DeleteCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis300/{taxYear}/{id}/xml/request": {
      "get": {
        "tags": [
          "Cis300"
        ],
        "summary": "Get XML Request",
        "description": "Returns the XML request that was or will be sent to HMRC for this RTI document.\r\nAlthough the value is XML, it is returned as a JSON string.",
        "operationId": "GetXmlRequestCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis300/{taxYear}/{id}/submit": {
      "post": {
        "tags": [
          "Cis300"
        ],
        "summary": "Submit Cis300",
        "description": "Submits an existing Cis300 to HMRC.",
        "operationId": "SubmitCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "force",
            "in": "query",
            "description": "If the CIS300 has already been accepted then you will need to set this to true to force it to be resubmitted",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis300/{taxYear}/{id}/markasaccepted": {
      "post": {
        "tags": [
          "Cis300"
        ],
        "summary": "Mark as Sent",
        "description": "Marks a Cis300 as having been sent to HMRC and accepted by them\r\nYou only use this method if the request has been submitted via an external system.\r\nIt will automatically be updated as Sent and/or Accepted if it's submitted via this API.",
        "operationId": "MarkAsAcceptedCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis300/requiringattention": {
      "get": {
        "tags": [
          "Cis300"
        ],
        "summary": "Cis300 Requiring Attention",
        "description": "Returns all Cis300 that have a Submission Status of NotSubmitted or ErrorResponse",
        "operationId": "RequiringAttentionCis300",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis-verification/{taxYear}": {
      "get": {
        "tags": [
          "CisVerification"
        ],
        "summary": "List CisVerificationRequest",
        "description": "Returns all CIS Verification Requests for the given tax year.",
        "operationId": "ListCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CisVerification"
        ],
        "summary": "Create CisVerificationRequest",
        "description": "Creates a new CIS Verification Request.",
        "operationId": "CreateCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisVerification"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis-verification/{taxYear}/{id}": {
      "put": {
        "tags": [
          "CisVerification"
        ],
        "summary": "Update CisVerificationRequest",
        "description": "Updates an existing CIS Verification Request.",
        "operationId": "UpdateCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CisVerification"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisVerification"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CisVerification"
        ],
        "summary": "Get CisVerificationRequest",
        "description": "Retrieves the CIS Verification Request.",
        "operationId": "GetCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisVerification"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CisVerification"
        ],
        "summary": "Delete CisVerificationRequest",
        "description": "Deletes the CIS Verification Request.",
        "operationId": "DeleteCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis-verification/{taxYear}/{id}/xml/request": {
      "get": {
        "tags": [
          "CisVerification"
        ],
        "summary": "Get XML Request",
        "description": "Returns the XML request that was or will be sent to HMRC for this RTI document.\r\nAlthough the value is XML, it is returned as a JSON string.",
        "operationId": "GetXmlRequestCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis-verification/{taxYear}/{id}/submit": {
      "post": {
        "tags": [
          "CisVerification"
        ],
        "summary": "Submit CisVerificationRequest",
        "description": "Submits an existing CIS Verification Request to HMRC.",
        "operationId": "SubmitCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "force",
            "in": "query",
            "description": "If the CisVerification has already been accepted then you will need to set this to true to force it to be resubmitted",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisVerification"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis-verification/{taxYear}/{id}/markasaccepted": {
      "post": {
        "tags": [
          "CisVerification"
        ],
        "summary": "Mark as Sent",
        "description": "Marks a CIS Verification Request as having been sent to HMRC and accepted by them\r\nYou only use this method if the request has been submitted via an external system.\r\nIt will automatically be updated as Sent and/or Accepted if it's submitted via this API.",
        "operationId": "MarkAsAcceptedCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisVerification"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/cis-verification/requiringattention": {
      "get": {
        "tags": [
          "CisVerification"
        ],
        "summary": "CisVerificationRequest Requiring Attention",
        "description": "Returns all CIS Verification Requests that have a Submission Status of NotSubmitted or ErrorResponse",
        "operationId": "RequiringAttentionCisVerification",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/costcentres": {
      "get": {
        "tags": [
          "CostCentre"
        ],
        "summary": "List Cost Centres",
        "description": "Lists all Cost Centres for an Employer.",
        "operationId": "IndexCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Cost Centres",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CostCentre"
        ],
        "summary": "Create Cost Centre",
        "description": "Creates a new CostCentre for the Employer.",
        "operationId": "CreateCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostCentre"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CostCentre"
        ],
        "summary": "Update Cost Centre",
        "description": "Updates a Cost Centre for the Employer.",
        "operationId": "UpdateCostCentreCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Cost Centre belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The existing code of the Cost Centre you want to get.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new values for the Cost Centre you want to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostCentre"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CostCentre"
        ],
        "summary": "Delete Cost Centre",
        "description": "Deletes the specified Cost Centre.",
        "operationId": "DeleteCostCentreCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Cost Centre belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The code of the Cost Centre you want to delete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/costcentres/{code}": {
      "get": {
        "tags": [
          "CostCentre"
        ],
        "summary": "Get Cost Centre (deprecated)",
        "description": "Gets the Cost Centres specified.\r\nUse the other GET endpoint that supports non-alphanumeric characters for a cost centre code",
        "operationId": "GetCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Department belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostCentre"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CostCentre"
        ],
        "summary": "Update Cost Centre (deprecated)",
        "description": "Updates a Cost Centre for the Employer.\r\nUse the other Update endpoint that supports non-alphanumeric characters for a cost centre code",
        "operationId": "UpdateCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CostCentre"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostCentre"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CostCentre"
        ],
        "summary": "Delete Cost Centre (deprecated)",
        "description": "Deletes the specified Cost Centre.\r\nUse the other Delete endpoint that supports non-alphanumeric characters for a cost centre code",
        "operationId": "DeleteCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/costcentres/costcentre": {
      "get": {
        "tags": [
          "CostCentre"
        ],
        "summary": "Get Cost Centre",
        "description": "Gets the Cost Centres specified.",
        "operationId": "GetCostCentreCostCentre",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Department belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The existing code of the Cost Centre you want to get.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostCentre"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/departments": {
      "get": {
        "tags": [
          "Department"
        ],
        "summary": "List Departments",
        "description": "Lists all Departments for an Employer.",
        "operationId": "IndexDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Departments",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Department"
        ],
        "summary": "Create Department",
        "description": "Creates a new Department for the Employer.",
        "operationId": "CreateDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/departments/{code}": {
      "get": {
        "tags": [
          "Department"
        ],
        "summary": "Get Department (deprecated)",
        "description": "Gets the Department specified.\r\nUse the other GET endpoint that supports non-alphanumeric characters for a department code",
        "operationId": "GetDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Department belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Department"
        ],
        "summary": "Update Department (deprecated)",
        "description": "Updates a Department for the Employer.",
        "operationId": "UpdateDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Department"
        ],
        "summary": "Delete Department (deprecated)",
        "description": "Deletes the specified Department.",
        "operationId": "DeleteDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/departments/Department": {
      "get": {
        "tags": [
          "Department"
        ],
        "summary": "Get Department",
        "description": "Gets the Department specified.",
        "operationId": "GetDepartmentDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Department belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The code of the Department you want to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/departments/department": {
      "put": {
        "tags": [
          "Department"
        ],
        "summary": "Update Department",
        "description": "Updates the details of an existing Department.",
        "operationId": "UpdateDepartmentDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Department"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Department"
        ],
        "summary": "Delete Department",
        "description": "Deletes the specified Department.",
        "operationId": "DeleteDepartmentDepartment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/dps/notices": {
      "post": {
        "tags": [
          "Dps"
        ],
        "summary": "Check for new Notices",
        "description": "Checks with HMRC for new notices. Returns an integer showing how many new notices were found",
        "operationId": "CheckForNoticesDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Dps"
        ],
        "summary": "List Notices",
        "description": "Lists DPS Notices.",
        "operationId": "ListNoticesDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Dps"
        ],
        "summary": "Delete All Notices",
        "operationId": "DeleteAllDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer that you want to delete all notices for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/dps/notices/xml": {
      "post": {
        "tags": [
          "Dps"
        ],
        "summary": "Parse notices from XML",
        "description": "Checks the supplied XML string for notices. They're then processed in the same was as if received from HMRC.\r\nOnly used for testing the parsing of DPS XML.\r\nReturns an integer showing how many new notices were found",
        "operationId": "ParseXmlDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "string"
              }
            },
            "application/json": {
              "schema": {
                "type": "string"
              }
            },
            "text/json": {
              "schema": {
                "type": "string"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/dps/notices/{id}": {
      "get": {
        "tags": [
          "Dps"
        ],
        "summary": "Get Notice",
        "description": "Returns the specified DPS Notice.",
        "operationId": "GetDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the DpsNotice you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DpsNotice"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Dps"
        ],
        "summary": "Apply Notice",
        "description": "Applies the specified DPS Notice.",
        "operationId": "ApplyDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the DpsNotice you want to apply.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DpsNotice"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Dps"
        ],
        "summary": "Delete Notice",
        "operationId": "DeleteDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the DpsNotice belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the DsNotice you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/dps/settings": {
      "get": {
        "tags": [
          "Dps"
        ],
        "summary": "Get DPS Settings",
        "description": "Returns the DpsSettings for the Employer",
        "operationId": "GetDpsSettingsDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DpsSettings"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Dps"
        ],
        "summary": "Update DPS Settings",
        "description": "Updates the DpsSettings for the Employer",
        "operationId": "UpdateDpsSettingsDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DpsSettings"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DpsSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DpsSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DpsSettings"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DpsSettings"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/dps/reapply": {
      "put": {
        "tags": [
          "Dps"
        ],
        "summary": "Reapply DpsNotices",
        "description": "From a specified date onwards, reapply DpsNotices",
        "operationId": "ReapplyNoticesDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "appliedFromDate",
            "in": "query",
            "description": "The date from which to apply DpsNotices",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.ReapplyDpsNoticeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/dps/employeeNotices/{employeeId}": {
      "get": {
        "tags": [
          "Dps"
        ],
        "summary": "List Employee Notices",
        "description": "Lists employee DPS Notices.",
        "operationId": "ListEmployeeNoticesDps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/email": {
      "get": {
        "tags": [
          "Email"
        ],
        "summary": "List Emails",
        "description": "Returns a list of all emails sent for this Employer.",
        "operationId": "IndexEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/email/{emailId}": {
      "get": {
        "tags": [
          "Email"
        ],
        "summary": "Get Email",
        "description": "Returns the email along with its status.",
        "operationId": "GetEmailEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "emailId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Email"
        ],
        "summary": "Re-send Email",
        "description": "Re-send an existing email.",
        "operationId": "ResendEmailEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "emailId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/email/settings": {
      "get": {
        "tags": [
          "Email"
        ],
        "summary": "Get MailSettings",
        "description": "Returns the MailSettings for an Employer.",
        "operationId": "GetMailSettingsEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailSettings"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Email"
        ],
        "summary": "Update MailSettings",
        "description": "Updates the MailSettings for an Employer.",
        "operationId": "UpdateMailSettingsEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailSettings"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/email/settings/test": {
      "post": {
        "tags": [
          "Email"
        ],
        "summary": "Send Test Email",
        "description": "This API call will generate a test email based on your MailSettings.",
        "operationId": "TestMailSettingsEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "The address to send a test email to",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/email/settings/verify": {
      "post": {
        "tags": [
          "Email"
        ],
        "summary": "Email Verification (Request)",
        "description": "If the user attempts to use a non-verified email address in their MailSettings then we'll send them a verification email.\r\nThis API endpoint can be used to re-send the email.",
        "operationId": "VerifyMailSettingsEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "put": {
        "tags": [
          "Email"
        ],
        "summary": "Email Verification (Respond)",
        "description": "Used to process the link sent in an email to verify an email address that's being used in MailSettings.",
        "operationId": "VerifyMailSettingsResponseEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "u",
            "in": "query",
            "description": "The value from the link in the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "k",
            "in": "query",
            "description": "The value from the link in the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/email/authorize": {
      "get": {
        "tags": [
          "Email"
        ],
        "summary": "Microsoft login for authorization",
        "description": "Redirects the user to Microsoft login for authorization.",
        "operationId": "AuthorizeEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/email/token": {
      "post": {
        "tags": [
          "Email"
        ],
        "summary": "Update token details by Authorization code",
        "description": "Stores token details (access and refresh tokens) in the database by receiving the authorization code \r\nand exchanging it for tokens using the Microsoft identity platform.",
        "operationId": "SaveOAuthTokenEmail",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The authorization code returned by Microsoft after user consent.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/employees": {
      "post": {
        "tags": [
          "Employee"
        ],
        "summary": "Create a new Employee",
        "description": "Creates an Employee for the Employer specified.\r\nIf you don't provide PayOptions then the DefaultPayOptions from the Employer will be used",
        "operationId": "CreateEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer you are creating the Employee for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CreateEmployeeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CreateEmployeeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CreateEmployeeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CreateEmployeeRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      },
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "List Employees",
        "operationId": "IndexEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to see Employees",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "description": "Zero-based page number, used in conjunction with pageSize",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Restrict the results to employees with the given status",
            "schema": {
              "$ref": "#/components/schemas/EmployeeStatus"
            }
          },
          {
            "name": "deptCode",
            "in": "query",
            "description": "If specified then only employees assigned to this department code will be listed",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pensionSchemeId",
            "in": "query",
            "description": "If specified then only employees enrolled into the given pension scheme will be listed.\r\n            If empty guid(00000000-0000-0000-0000-000000000000) is passed in all employees not enrolled into any pension scheme will be listed.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Specifies the field by which to sort the employees. Default is EmployeeSortBy.None.",
            "schema": {
              "$ref": "#/components/schemas/EmployeeSortBy"
            }
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Specifies whether the sorting should be in descending order. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/import": {
      "post": {
        "tags": [
          "Employee"
        ],
        "summary": "Import CSV",
        "description": "Import employee data from a CSV file.",
        "operationId": "ImportCsvEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format of the CSV file.",
            "schema": {
              "$ref": "#/components/schemas/CsvFileFormat"
            }
          },
          {
            "name": "previewOnly",
            "in": "query",
            "description": "Set to true and nothing will be imported but you'll be shown a preview of the data.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "allowUpdates",
            "in": "query",
            "description": "Set to true and if the payroll code matches an existing employee then that employee will be updated.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Get an Employee",
        "operationId": "GetEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Update an Employee",
        "operationId": "UpdateEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.UpdateEmployeeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.UpdateEmployeeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.UpdateEmployeeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.UpdateEmployeeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "delete": {
        "tags": [
          "Employee"
        ],
        "summary": "Delete an Employee",
        "operationId": "DeleteEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/navigation": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Get employee navigation details for a specific employee",
        "operationId": "GetEmployeeNavigationEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeStatus",
            "in": "query",
            "description": "Restrict the results to employees with the given status",
            "schema": {
              "$ref": "#/components/schemas/EmployeeStatus"
            }
          },
          {
            "name": "deptCode",
            "in": "query",
            "description": "If specified then only employees assigned to this department code will be listed",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Specifies the field by which to sort the employees. Default is EmployeeSortBy.None.",
            "schema": {
              "$ref": "#/components/schemas/EmployeeSortBy"
            }
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Specifies whether the sorting should be in descending order. Default is false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeNavigationResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/list": {
      "post": {
        "tags": [
          "Employee"
        ],
        "summary": "Get list of FPS Employees for EYFPS for the given Ids",
        "operationId": "FpsEmployeesEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "List of Employee Ids",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.EmployeeResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/rehire": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Rehire an Employee",
        "description": "If an employee has left and you want to rehire him/her, then this method will create a copy of the employee record but with a new payroll code",
        "operationId": "ReHireEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to rehire.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/employers/{employerId}/employees/delete": {
      "post": {
        "tags": [
          "Employee"
        ],
        "summary": "Delete Employees",
        "description": "Used to delete multiple employees.\r\nThe body should contain an array of Ids to identify the employees to delete.",
        "operationId": "DeleteMultipleEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employees belong",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/employees/leavers": {
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Mark as Leavers",
        "description": "Used to mark multiple employees as leavers.\r\nThe body should contain an array of Ids to identify the employees to update.",
        "operationId": "MarkAsLeaversEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employees belong",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "The date the employees left or are leaving",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "emailP45",
            "in": "query",
            "description": "If set to true, the employee will be email a P45 if they have an email address",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "List Leavers",
        "description": "Returns a list of all Employees that have a leaving date set",
        "operationId": "LeaversEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to see Leavers",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "onlyUnsentP45s",
            "in": "query",
            "description": "If set to true then only employees that don't have the P45Sent set to true will be returned",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/onhold": {
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Mark as On Hold",
        "description": "Used to mark multiple employees as On Hold or not On Hold.\r\nThe body should contain an array of Ids to identify the employees to update.",
        "operationId": "SetOnHoldEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employees belong",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "onHold",
            "in": "query",
            "description": "The OnHold status to set",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/photo": {
      "post": {
        "tags": [
          "Employee"
        ],
        "summary": "Update Photo",
        "description": "If you already have a URL for the employee photo then you can just set the PhotoUrl property of the Employee.\r\nAlternatively, submit an image here and we'll upload it, resize it to 200px squared and set the PhotoUrl for you.",
        "operationId": "UpdatePhotoEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Employee"
        ],
        "summary": "Delete Photo",
        "operationId": "DeletePhotoEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/search": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Search Employer for Employees",
        "description": "Search for an employee of the specified employer based on their name or payroll code.\r\nEnsure your query is at least 3 characters long or you wont get any results.",
        "operationId": "SearchEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to search.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "The search string (at least 3 characters).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "exludeCisSubContactors",
            "in": "query",
            "description": "If set to true, then we'll only search employees that aren't labelled as CIS Subcontractors",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/expiring-rtw": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Expiring RightToWork",
        "description": "Returns a list of Item representing Employees that have a RightToWork with a DocumentExpiring date within the next numberOfDays days.",
        "operationId": "ExpiringRtwEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to search.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "numberOfDays",
            "in": "query",
            "description": "The number of days in the future to look got expiry dates.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/search/payrollcode": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Get Employee by Payroll Code",
        "description": "Get an employee by their payroll code. Will return an Item that contains the Id for you to retrieve the full Employee record",
        "operationId": "SearchByPayrollCodeEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The payroll code to look for.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Item"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/payrunentries/{taxYear}": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "PayRunEntries for Employee",
        "description": "List PayRunEntries for the given Employee in the specified TaxYear",
        "operationId": "PayRunEntriesEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to search.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Employee Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear for which you want to list PayRunEntries.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/awe": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Average Weekly Earnings",
        "description": "Calculates the Average Weekly Earnings for an Employee at the given date.\r\nYou can optionally include a LeaveType and we'll adjust the given date accordingly\r\nFor example if you specify Maternity then it'll be moved back by 15 weeks",
        "operationId": "AverageWeeklyEarningsEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Employee Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "The date at which you want to calculate the earnings from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "leaveType",
            "in": "query",
            "description": "",
            "schema": {
              "$ref": "#/components/schemas/LeaveType"
            }
          },
          {
            "name": "secondaryDate",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "tertiaryDate",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AverageWeeklyEarnings"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/basehourlyrate": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Calculate Base Hourly Rate (deprecated)",
        "operationId": "BaseHourlyRateEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Employee Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The frequency that this Employee is paid.",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "payBasis",
            "in": "query",
            "description": "",
            "schema": {
              "$ref": "#/components/schemas/PayBasis"
            }
          },
          {
            "name": "payAmount",
            "in": "query",
            "description": "The amount the Employee is regularly paid each period.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/basedailyrate": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Calculate Base Daily Rate (deprecated)",
        "operationId": "BaseDailyRateEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Employee Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The frequency that this Employee is paid.",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "payBasis",
            "in": "query",
            "description": "",
            "schema": {
              "$ref": "#/components/schemas/PayBasis"
            }
          },
          {
            "name": "payAmount",
            "in": "query",
            "description": "The amount the Employee is regularly paid each period.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/{taxYear}/minimum-wage": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Minimum Wage",
        "description": "Calculates the National Minimum Wage for this employee for the given TaxYear and based on\r\ntheir age at the given date",
        "operationId": "MinimumWageEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Employee Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "The date for which we should calculate the employees age, for not provided we'll use today's date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/payoptions": {
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Apply PayOptions",
        "description": "Overwrite the PayOptions for all employees with the values provided.\r\nCurrently only the following fields are updated: period, payAmount, basis, payamountMultiplier, nationalMinimumWage and regularPaylines.",
        "operationId": "ApplyPayOptionsEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the employees belong.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayOptions"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayOptions"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayOptions"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayOptions"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/employees/payincrease": {
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Apply Pay Increase",
        "description": "Increases the PayOptions.PayAmount and PayOptions.BaseHourlyRate by the percentage given.",
        "operationId": "ApplyPayIncreaseEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the employees belong.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "percentage",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "allEmployees",
            "in": "query",
            "description": "Set this to true",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/departments": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Get Employee Departments",
        "operationId": "GetDepartmentMembershipsEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to retrieve Departments for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DepartmentMembership"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Set Employee Departments",
        "operationId": "SetDepartmentMembershipsEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to set Departments for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DepartmentMembership"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/evcsettings": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Get EvcSettings",
        "operationId": "GetEvcSettingsEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve EvcSettings.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvcSettings"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Update EvcSettings",
        "operationId": "UpdateEvcSettingsEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee for who you want to update EvcSettings.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EvcSettings"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EvcSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EvcSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EvcSettings"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvcSettings"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{id}/costcentres": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Get Employee Cost Centres",
        "operationId": "GetEmployeeCostCentresEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to retrieve CostCenntres for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployeeCostCentre"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Set Employee Cost Centres",
        "operationId": "SetEmployeeCostCentresEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee you want to set CostCentres for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployeeCostCentre"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/reset-holiday-scheme": {
      "put": {
        "tags": [
          "Employee"
        ],
        "summary": "Resets employee accrual scheme",
        "description": "Resets employee accrual scheme fields to zero and adds a update accrual reset date in employee table",
        "operationId": "ResetEmployeeHolidayAccrualSchemeEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "UnqiueId of the employees for setting the Holiday Scheme Reset Date",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{ordinal}/{periodNumber}/{taxYear}/{payPeriod}/supplementary": {
      "get": {
        "tags": [
          "Employee"
        ],
        "summary": "Get List of Employees for Supplementary PayRun",
        "operationId": "GetEmployeesForSupplementaryPayRunEmployee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "The Period for which you want to get the employees for Pay Run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "description": "The Period for which you want to get the employees for Pay Run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear for which you want to get the employees for Pay Run.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The Pay Period (i.e, Monthly, Weekly) for which you want to get employees for Pay Run.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "description": "The page number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "The option to filter on a search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeSupplementaryPayRunResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "List Employee Roles",
        "description": "Lists all Roles for an Employee.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "IndexEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee which you want to list Roles.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "post": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Create Employee Role",
        "description": "Creates a new Role for the Employee.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "CreateEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeRole"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Get Employee Role",
        "description": "Gets the Role specified.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "GetEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The id of the Role you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Update Employee Role",
        "description": "Updates a Role for the Employee.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "UpdateEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Role to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRole"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeRole"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Delete Employee Role",
        "description": "Deletes the specified Role.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "DeleteEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Role to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}/departments": {
      "put": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Set Employee Role Departments",
        "description": "Assigns Departments to an Employee Role.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "SetDepartmentMembershipsEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to set Departments for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to set Departments for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DepartmentMembership"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DepartmentMembership"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Get Employee Role Departments",
        "description": "Gets Departments that are Assigned to an Employee Role.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "GetDepartmentMembershipsEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to retrieve Departments for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to retrieve Departments for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DepartmentMembership"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{roleId}/basehourlyrate": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Calculate Base Hourly Rate",
        "operationId": "GetBaseHourlyRateEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleId",
            "in": "path",
            "description": "The Employee Role Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The frequency that this Employee Role is paid.",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "payBasis",
            "in": "query",
            "description": "",
            "schema": {
              "$ref": "#/components/schemas/PayBasis"
            }
          },
          {
            "name": "payAmount",
            "in": "query",
            "description": "The amount the Employee Role is regularly paid each period.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "workingPatternId",
            "in": "query",
            "description": "The Id of the Working Pattern that we want the calculations against.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{roleId}/basedailyrate": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Calculate Base Daily Rate",
        "operationId": "GetBaseDailyRateEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleId",
            "in": "path",
            "description": "The Employee Role Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The frequency that this Employee Role is paid.",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "payBasis",
            "in": "query",
            "description": "",
            "schema": {
              "$ref": "#/components/schemas/PayBasis"
            }
          },
          {
            "name": "payAmount",
            "in": "query",
            "description": "The amount the Employee Role is regularly paid each period.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "workingPatternId",
            "in": "query",
            "description": "The Id of the Working Pattern that we want the calculations against.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}/costcentres": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Get Employee Role Cost Centres",
        "description": "Gets Cost Centres that are Assigned to an Employee Role.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "GetCostCentreMembershipsEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to retrieve Cost Centres for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to retrieve Cost Centres for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployeeCostCentre"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Set Employee Role Cost Centres",
        "description": "Assigns Cost Centres to an Employee Role.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "SetCostCentreMembershipsEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to set Cost Centres for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to set Cost Centres for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployeeCostCentre"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployeeCostCentre"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}/workingpatterns/{roleWorkingPatternId}": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Get Employee Role Working Pattern",
        "description": "Gets the Employee Role Working Pattern specified.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "GetRoleWorkingPatternEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to retrieve a Role Working Pattern for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleWorkingPatternId",
            "in": "path",
            "description": "The Id of the Employee Role Working Pattern you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Delete Employee Role Working Pattern",
        "description": "Deletes the specified Employee Role Working Pattern.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "DeleteRoleWorkingPatternEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role to which the Role Working Pattern belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleWorkingPatternId",
            "in": "path",
            "description": "The Id of the Employee Role Working Pattern you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}/workingpatterns": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "List Working Patterns for an Employee Role",
        "description": "Lists all Working Patterns for an Employee Role.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "ListRoleWorkingPatternsEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to retrieve Employee Role Working Patterns for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternResponseItem"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "post": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Create Employee Role Working Pattern",
        "description": "Creates a new Role Working Pattern for the Employee Role.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "CreateRoleWorkingPatternEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to create a Role Working Pattern for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}/workingPatterns/{roleWorkingPatternId}": {
      "put": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Update Employee Role Working Pattern",
        "description": "Updates a Working Pattern for the Employee Role.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "UpdateRoleWorkingPatternEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Role belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Role to which the Employee Role Working Pattern belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleWorkingPatternId",
            "in": "path",
            "description": "The Id of the Employee Role Working Pattern you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleWorkingPatternResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}/analysiscategories/{analysisCategoryId}/analysiscategorycodes": {
      "put": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Set  Employee Role AnalysisCategorycode",
        "description": "Assigns AnalysisCategoryCode to an Employee Role.\r\nYou must have the multi-role feature enabled.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "SetEmployeeRoleAnalysisCategoryCodesEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to set AnalysisCategoryCode for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to set AnalysisCategoryCode for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "analysisCategoryId",
            "in": "path",
            "description": "The Id of the Analysis Category you want to set AnalysisCategoryCode for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleAnalysisCategoryCodeRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleAnalysisCategoryCodeRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleAnalysisCategoryCodeRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.EmployeeRoleAnalysisCategoryCodeRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.EmployeeRoleAnalysisCategoryCodeResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{id}/analysiscategorycodes": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Get Employee Role AnalysisCategoryCode",
        "description": "Gets AnalysisCategoryCode that are Assigned to an Employee Role.\r\nYou must have the multi-role feature enabled.",
        "operationId": "GetEmployeeRoleAnalysisCategoryCodesEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to retrieve AnalysisCategoryCode for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employee Role you want to retrieve AnalysisCategoryCode for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.EmployeeRoleAnalysisCategoryCodeResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/roles/{roleId}/assumedpensionablepay": {
      "get": {
        "tags": [
          "EmployeeRole"
        ],
        "summary": "Calculate Assumed Pensionable Pay",
        "operationId": "GetRoleAssumedPensionablePayEmployeeRole",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleId",
            "in": "path",
            "description": "The Employee Role Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The frequency that this Employee Role is paid.",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "leaveType",
            "in": "query",
            "description": "The type of the Leave.",
            "schema": {
              "$ref": "#/components/schemas/LeaveType"
            }
          },
          {
            "name": "leavePayType",
            "in": "query",
            "description": "The pay type of the Leave.",
            "schema": {
              "$ref": "#/components/schemas/LeavePayType"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "The date from which the Assumed Pensionable Pay is calculated.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers": {
      "post": {
        "tags": [
          "Employer"
        ],
        "summary": "Create an Employer",
        "description": "Use this method to create a new Employer\r\nThe only required field is the Employer name.",
        "operationId": "CreateEmployer",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success - the employer has been created and is returned in the body.\r\nThe unique URL for this employer is returned in the Location header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "List Employers",
        "description": "Return a list of employers with pagination options. If no pagination parameters are provided, return all applicable employers based on the search.",
        "operationId": "IndexEmployer",
        "parameters": [
          {
            "name": "employerGroupCode",
            "in": "query",
            "description": "Optionally specify the code of an EmployerGroup to only see employers that are a member of that group.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "searchTerm",
            "in": "query",
            "description": "Filters the employer list by Processor Name, Employer Name, Customer #, Alt ID and Employer GUID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "employerListType",
            "in": "query",
            "description": "Filters the employer list type.",
            "schema": {
              "$ref": "#/components/schemas/EmployerListType"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "description": "Zero-based index indicating the current page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Field to sort employers by.",
            "schema": {
              "$ref": "#/components/schemas/EmployerSortBy"
            }
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Indicates descending sort order.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/import": {
      "post": {
        "tags": [
          "Employer"
        ],
        "summary": "Import CSV",
        "description": "Import employers from a CSV file.",
        "operationId": "ImportCsvEmployer",
        "parameters": [
          {
            "name": "previewOnly",
            "in": "query",
            "description": "Set to true and nothing will be imported but you'll be shown a preview of the data.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/search": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Search Employers",
        "operationId": "SearchEmployer",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/employees/search": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Search Employees",
        "description": "Search all employers for an employee based on their name or payroll code.\r\nEnsure your query is at least 3 characters long or you wont get any results.",
        "operationId": "SearchEmployeesEmployer",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "The search string (at least 3 characters).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "exludeCisSubContactors",
            "in": "query",
            "description": "If set to true, then we'll only search employees that aren't labeled as CIS Subcontractors",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get an Employer",
        "operationId": "GetEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployerResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Update an Employer",
        "operationId": "UpdateEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployerResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Employer"
        ],
        "summary": "Delete an Employer",
        "operationId": "DeleteEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{id}/calendar": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get Employer Calendar",
        "description": "Get a list of upcoming CalendarEntry for the Employer.",
        "operationId": "CalendarEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/users": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "List Users",
        "description": "Returns a list of Users that have access to the given Employer",
        "operationId": "ListUsersEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want a list of Users for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/users/userEmployer": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get User Employer",
        "description": "Returns a UserEmployer for the given Employer Id",
        "operationId": "GetUserEmployerEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to get the User from.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEmployer"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{id}/users/owner": {
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Set Owner",
        "description": "Sets the owner for the employer. You must be the owner of the Employer to set this value.\r\nThe user you are setting as the owner must already have the role Admin.\r\nYou can get a list of users from the ListUsers endpoint.",
        "operationId": "SetOwnerEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to change the ownership of.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The Id of the User you want a change ownership to. They must already be a user for this employer and have the admin role assigned to them.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "string",
                "format": "uuid"
              }
            },
            "application/json": {
              "schema": {
                "type": "string",
                "format": "uuid"
              }
            },
            "text/json": {
              "schema": {
                "type": "string",
                "format": "uuid"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "string",
                "format": "uuid"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{id}/users/{userId}": {
      "delete": {
        "tags": [
          "Employer"
        ],
        "summary": "Remove User",
        "description": "Removes a User from an Employer.\r\nYou cannot remove Users that are marked as the owner of the Employer.\r\nYou must be the owner of the Employer in order to remove other Users.",
        "operationId": "RemoveUserEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to remove the User from.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The Id of the User you want to remove.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{id}/suggestPayrollCode": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Suggest Payroll Code",
        "description": "This helper method returns a unique code for the next Employee that you create for the specified Employer.\r\nYou don't have to use the value provided, you can use any value that is unique across Employees for the Employer.",
        "operationId": "SuggestPayCodeEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want a suggestion for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/logo": {
      "post": {
        "tags": [
          "Employer"
        ],
        "summary": "Update Employer Logo",
        "description": "If you already have a URL for the employer Logo then you can just set the LogoUrl property of the Employer.\r\nAlternatively, submit a logo here and we'll upload it and set the LogoUrl for you.",
        "operationId": "UpdateLogoEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.EmployerResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/custompayslip": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get Payslip Customisations",
        "description": "Get the settings used to customise PaySlips for this Employer",
        "operationId": "CustomPayslipEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want customisations for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayslipCustomisation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Employer"
        ],
        "summary": "Update Payslip Customisations",
        "description": "Set the settings used to customise PaySlips for this Employer",
        "operationId": "UpdateCustomPayslipEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want customisations for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayslipCustomisation"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/YearEnd": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Review Year End Changes",
        "description": "View the changes that will be made when you start the next tax year for the employer",
        "operationId": "ReviewYearEndEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/YearEnd"
                }
              }
            }
          },
          "404": {
            "description": "NotFound -\r\nWe don't yet support the tax year following the employers current tax year"
          }
        }
      },
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Make Year End Changes",
        "description": "Apply the changes for the year end and start the next tax year for the employer.",
        "operationId": "ApplyYearEndEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "You can suppress the emailing of P60s and/or CIS Statements by supplying a value of true for dontEmailP60s and/or dontEmailCisStatements",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "text/json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/YearEnd"
                }
              }
            }
          },
          "404": {
            "description": "NotFound -\r\nWe don't yet support the tax year following the employers current tax year"
          }
        }
      }
    },
    "/employers/{id}/rti/requiringattention": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "RTI Documents Requiring Attention",
        "description": "Returns all RTI documents that have a Submission Status of NotSubmitted or ErrorResponse",
        "operationId": "RtiRequiringAttentionEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/automation": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get Automation Settings",
        "description": "Returns the AutomationSettings for the Employer",
        "operationId": "GetAutomationSettingsEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationSettings"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Update Automation Settings",
        "description": "Updates the AutomationSettings for the Employer",
        "operationId": "UpdateAutomationSettingsEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AutomationSettings"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutomationSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AutomationSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AutomationSettings"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationSettings"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/groups": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get Employer Groups",
        "operationId": "GetGroupMembershipsEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to retrieve Groups for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployerGroupMembership"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Set Employer Groups",
        "operationId": "SetGroupMembershipsEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to set Groups for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployerGroupMembership"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployerGroupMembership"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployerGroupMembership"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmployerGroupMembership"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployerGroupMembership"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/openingbalances": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get EmployerOpeningBalances",
        "description": "Returns the EmployerOpeningBalances for the Employer",
        "operationId": "GetEmployerOpeningBalancesEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerOpeningBalances"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Update EmployerOpeningBalances",
        "description": "Updates the EmployerOpeningBalances for the Employer for their StartYear",
        "operationId": "UpdateEmployerOpeningBalancesEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerOpeningBalances"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerOpeningBalances"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerOpeningBalances"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerOpeningBalances"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerOpeningBalances"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/evc": {
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Update EVC OptIn",
        "description": "Sets the EVC OptIn setting for the employer.\r\nA boolean value needs to be sent in the body to indicate if the employer is opted in.\r\nSo sending false would result in the employer being opted out.",
        "operationId": "SetEvcOptInEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "boolean"
              }
            },
            "application/json": {
              "schema": {
                "type": "boolean"
              }
            },
            "text/json": {
              "schema": {
                "type": "boolean"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "boolean"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get EVC OptIn History",
        "description": "Gets the history of changes to the EVC OptIn setting for the employer.",
        "operationId": "GetEvcOptInHistoryEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployerEvcOptInHistory"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/accrual-holiday-scheme/employee": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Get List of Employees with Holiday Accrual Scheme",
        "operationId": "GetEmployeesWithAccrualHolidaySchemeEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{id}/can-use-premium-connectors": {
      "put": {
        "tags": [
          "Employer"
        ],
        "summary": "Update Can Use Premium Connectors Setting",
        "description": "Sets Can Use Premium Connectors Setting\r\nA boolean value needs to be sent in the body to indicate if the employer can use premium connectors.\r\nSo sending false would result in the employer not being able to use the premium connectors.",
        "operationId": "UpdateEmployerCanUsePremiumConnectorsEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Employer you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "boolean"
              }
            },
            "application/json": {
              "schema": {
                "type": "boolean"
              }
            },
            "text/json": {
              "schema": {
                "type": "boolean"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "boolean"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          },
          "403": {
            "description": "Forbidden"
          }
        }
      }
    },
    "/employers/reenrolmentstatus": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Gets the re-enrolment status for the employer",
        "operationId": "GetReenrolmentStatusEmployer",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReenrolmentStatus"
                }
              }
            }
          }
        }
      }
    },
    "/employers/groups": {
      "get": {
        "tags": [
          "EmployerGroup"
        ],
        "summary": "List EmployerGroups",
        "description": "Lists all EmployerGroups for the user.",
        "operationId": "IndexEmployerGroup",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "EmployerGroup"
        ],
        "summary": "Create EmployerGroup",
        "description": "Creates a new EmployerGroup for the user.",
        "operationId": "CreateEmployerGroup",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerGroup"
                }
              }
            }
          }
        }
      }
    },
    "/employers/groups/{code}": {
      "get": {
        "tags": [
          "EmployerGroup"
        ],
        "summary": "Get EmployerGroup",
        "description": "Gets the EmployerGroup specified.",
        "operationId": "GetEmployerGroup",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerGroup"
                }
              }
            }
          },
          "404": {
            "description": "EmployerGroup Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "EmployerGroup"
        ],
        "summary": "Update EmployerGroup",
        "description": "Updates a EmployerGroup for the user.",
        "operationId": "UpdateEmployerGroup",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerGroup"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerGroup"
                }
              }
            }
          },
          "404": {
            "description": "EmployerGroup Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "EmployerGroup"
        ],
        "summary": "Delete EmployerGroup",
        "description": "Deletes the specified EmployerGroup.",
        "operationId": "DeleteEmployerGroup",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/templates": {
      "get": {
        "tags": [
          "EmployerTemplate"
        ],
        "summary": "List EmployerTemplates",
        "description": "Lists all EmployerTemplates for the Employer specified.",
        "operationId": "IndexEmployerTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Pay Codes",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/templates/{type}": {
      "get": {
        "tags": [
          "EmployerTemplate"
        ],
        "summary": "Get EmployerTemplate",
        "description": "Gets the EmployerTemplate specified by the Type.",
        "operationId": "GetEmployerTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the EmployerTemplate belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "type",
            "in": "path",
            "description": "The EmployerTemplateType you want to retrieve.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EmployerTemplateType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerTemplate"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "EmployerTemplate"
        ],
        "summary": "Update EmployerTemplate",
        "description": "Updates the EmployerTemplate specified by the Type.\r\nThe only values need to supply are ```Content```\r\nand (if applicable) ```Subject```.\r\nIf these values are empty strings or not provided then the template will revert to the default values.",
        "operationId": "UpdateEmployerTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the EmployerTemplate belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EmployerTemplateType"
            }
          }
        ],
        "requestBody": {
          "description": "The EmployerTemplateType you want to retrieve.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerTemplate"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerTemplate"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerTemplate"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerTemplate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerTemplate"
                }
              }
            }
          }
        }
      }
    },
    "/engine/config": {
      "get": {
        "tags": [
          "Engine"
        ],
        "summary": "Get Configuration",
        "description": "Returns the raw configuration data that is used as the basis for any calculations for the given tax year.\r\nYou would never need to use this configuration values yourself in any API calls. It is provided just for information purposes",
        "operationId": "ConfigEngine",
        "parameters": [
          {
            "name": "taxYear",
            "in": "query",
            "description": "The year that you want to retrieve details for. If not provided then current tax year will be used.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxYearConfig"
                }
              }
            }
          }
        }
      }
    },
    "/engine/config/{taxYear}/ni/{payPeriod}": {
      "get": {
        "tags": [
          "Engine"
        ],
        "summary": "Get National Insurance Thresholds",
        "description": "Returns the National Insurance thresholds for the given PayPeriod",
        "operationId": "GetNationalInsuranceThresholdsEngine",
        "parameters": [
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, monthly) that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodStart",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "periodEnd",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "effectiveDate",
            "in": "query",
            "description": "The date as of which you want to retrieve details for. If not provided then latest available details for the current tax year will be used.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NationalInsuranceCalculationPeriodValues"
                }
              }
            }
          }
        }
      }
    },
    "/engine/tax": {
      "get": {
        "tags": [
          "Engine"
        ],
        "summary": "Calculate Tax due",
        "description": "Calculates tax amount due, given the values specified.\r\nYou would never need to use this API call. It is provided just for information and testing purposes.\r\nAccess is limited so you'll probably receive a 401 response if you try to use it.",
        "operationId": "CalculateTaxEngine",
        "parameters": [
          {
            "name": "taxYear",
            "in": "query",
            "description": "If not provided then current tax year will be used.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "taxCode",
            "in": "query",
            "description": "If not provided then the default code for the tax year will be used.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "gross",
            "in": "query",
            "description": "The gross amount for which tax should be calculated.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "periodStart",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "periodEnd",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The PayPeriod (Weekly, Monthly, etc)",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "period",
            "in": "query",
            "description": "The period that this payment is being made for",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "week1",
            "in": "query",
            "description": "If set to true then tax will be calculated in a Week1/Month1 basis",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "grossToDate",
            "in": "query",
            "description": "Gross pay to date",
            "schema": {
              "type": "number",
              "format": "double",
              "default": 0
            }
          },
          {
            "name": "taxToDate",
            "in": "query",
            "description": "Tax paid to date",
            "schema": {
              "type": "number",
              "format": "double",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          }
        }
      }
    },
    "/engine/ni": {
      "get": {
        "tags": [
          "Engine"
        ],
        "summary": "Calculate NI due.",
        "description": "Calculates National Insurance Contributions due given the values specified.\r\nYou would never need to use this API call in practice. It is provided just for information and testing purposes.\r\nAccess is limited so you'll probably receive a 401 response if you try to use it.",
        "operationId": "CalculateNiEngine",
        "parameters": [
          {
            "name": "taxYear",
            "in": "query",
            "description": "If not provided then current tax year will be used.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "gross",
            "in": "query",
            "description": "The gross amount for which tax should be calculated.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "niCategory",
            "in": "query",
            "description": "The letter from the NI table",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The PayPeriod (Weekly, Monthly, etc)",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NationalInsuranceCalculation"
                }
              }
            }
          }
        }
      }
    },
    "/engine/branding/{brandCode}": {
      "get": {
        "tags": [
          "Engine"
        ],
        "summary": "Tenant Branding",
        "description": "Returns Tenant Branding. Not for public use, will return 401",
        "operationId": "GetTenantBrandingEngine",
        "parameters": [
          {
            "name": "brandCode",
            "in": "path",
            "description": "The Id of the Tenant you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tenant"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/{taxYear}": {
      "get": {
        "tags": [
          "Eps"
        ],
        "summary": "List EPS",
        "description": "Returns all Employment Payment Summaries for the given tax year.\r\nIf the 'Linked EPS' is enabled by the employer, Employment Payment Summaries\r\nfor employer as well as for any linked employers with 'Linked EPS' enabled\r\nand with the same PAYE scheme are returned.",
        "operationId": "ListEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Eps"
        ],
        "summary": "Create EPS",
        "description": "Creates a new Employer Payment Summary",
        "operationId": "CreateEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/{taxYear}/{id}": {
      "put": {
        "tags": [
          "Eps"
        ],
        "summary": "Update EPS",
        "description": "Updates an existing Employment Payment Summary.",
        "operationId": "UpdateEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Eps"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eps"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Eps"
        ],
        "summary": "Get EPS",
        "description": "Retrieves the Employer Payment Summary specified",
        "operationId": "GetEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eps"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Eps"
        ],
        "summary": "Delete Eps",
        "description": "Deletes the Eps.",
        "operationId": "DeleteEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/{taxYear}/{id}/xml/request": {
      "get": {
        "tags": [
          "Eps"
        ],
        "summary": "Get XML Request",
        "description": "Returns the XML request that was or will be sent to HMRC for this RTI document.\r\nAlthough the value is XML, it is returned as a JSON string.",
        "operationId": "GetXmlRequestEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/{taxYear}/{id}/submit": {
      "post": {
        "tags": [
          "Eps"
        ],
        "summary": "Submit EPS",
        "description": "Submits an existing Employment Payment Summary to HMRC.",
        "operationId": "SubmitEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "force",
            "in": "query",
            "description": "If the EPS has already been accepted then you will need to set this to true to force it to be resubmitted",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/{taxYear}/{id}/markasaccepted": {
      "post": {
        "tags": [
          "Eps"
        ],
        "summary": "Mark as Sent",
        "description": "Marks an Employer Payment Summary as having been sent to HMRC and accepted by them.\r\nYou would only use this method if the EPS had been submitted via an external system.\r\nIt will automatically be updated as Sent and/or Accepted if it's submitted via this API.",
        "operationId": "MarkAsAcceptedEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/requiringattention": {
      "get": {
        "tags": [
          "Eps"
        ],
        "summary": "EPS Requiring Attention",
        "description": "Returns all Employer Payment Summaries that have a Submission Status of NotSubmitted or ErrorResponse",
        "operationId": "RequiringAttentionEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/{taxYear}/{taxMonth}/recoverableamounts": {
      "get": {
        "tags": [
          "Eps"
        ],
        "summary": "Recoverable Amounts",
        "description": "Get all recoverable amounts (SMP, etc) for a given tax year, up to the given tax month, and if the 'Linked EPS'\r\nis enabled by the employer, recoverable amounts as well as the recoverable amounts for any employers with 'Linked EPS' enabled and with the same PAYE scheme\r\nis returned as a sum.",
        "operationId": "RecoverableAmountsEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "taxMonth",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecoverableAmounts"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/eps/{taxYear}/{taxMonth}/apprenticeshipLevytodate": {
      "get": {
        "tags": [
          "Eps"
        ],
        "summary": "Apprenticeship Levy",
        "description": "Get all Apprenticeship Levy (SMP, etc) for a given tax year, up to the given tax month, and if the 'Linked EPS'\r\nis enabled by the employer, apprenticeship levy as well as the apprenticeship levy for any employers with 'Linked EPS' enabled and with the same PAYE scheme\r\nis returned as a sum.",
        "operationId": "ApprenticeshipLevyEps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "taxMonth",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EpsApprenticeshipLevy"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/exb/{taxYear}": {
      "get": {
        "tags": [
          "Exb"
        ],
        "summary": "List EXB",
        "description": "Returns all ExpensesAndBenefits for the given tax year.",
        "operationId": "ListExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Exb"
        ],
        "summary": "Create EXB",
        "description": "Creates a new Expenses And Benefits submission",
        "operationId": "CreateExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/exb/{taxYear}/{id}": {
      "put": {
        "tags": [
          "Exb"
        ],
        "summary": "Update EXB",
        "description": "Updates an existing Expenses And Benefits submission.",
        "operationId": "UpdateExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Exb"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exb"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Exb"
        ],
        "summary": "Get EXB",
        "description": "Retrieves the Expenses And Benefits submission specified",
        "operationId": "GetExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exb"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Exb"
        ],
        "summary": "Delete EXB",
        "description": "Deletes the EXB.",
        "operationId": "DeleteExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/rti/exb/{taxYear}/{id}/xml/request": {
      "get": {
        "tags": [
          "Exb"
        ],
        "summary": "Get XML Request",
        "description": "Returns the XML request that was or will be sent to HMRC for this RTI document.\r\nAlthough the value is XML, it is returned as a JSON string.",
        "operationId": "GetXmlRequestExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/exb/{taxYear}/{id}/submit": {
      "post": {
        "tags": [
          "Exb"
        ],
        "summary": "Submit EXB",
        "description": "Submits an existing Expenses And Benefits submission to HMRC.",
        "operationId": "SubmitExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "force",
            "in": "query",
            "description": "If the EXB has already been accepted then you will need to set this to true to force it to be resubmitted",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exb"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/exb/{taxYear}/{id}/markasaccepted": {
      "post": {
        "tags": [
          "Exb"
        ],
        "summary": "Mark as Sent",
        "description": "Marks an Expenses And Benefits submission as having been sent to HMRC and accepted by them.\r\nYou would only use this method if the EXB had been submitted via an external system.\r\nIt will automatically be updated as Sent and/or Accepted if it's submitted via this API.",
        "operationId": "MarkAsAcceptedExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exb"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/exb/requiringattention": {
      "get": {
        "tags": [
          "Exb"
        ],
        "summary": "EXB Requiring Attention",
        "description": "Returns all Expenses And Benefits submissions that have a Submission Status of NotSubmitted or ErrorResponse",
        "operationId": "RequiringAttentionExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/exb/{taxYear}/values": {
      "get": {
        "tags": [
          "Exb"
        ],
        "summary": "Annual Values",
        "description": "Returns an empty Exb showing the number of employees and total benefits for the year provided",
        "operationId": "AnnualValuesExb",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exb"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "List Providers",
        "description": "Returns a list of External Data Providers and indicates which the Employer has successfully authenticated with.",
        "operationId": "ListExternalData",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalDataProvider"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/companies": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "List Companies",
        "description": "Return a list of companies from the external data provider",
        "operationId": "CompaniesExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalDataCompany"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/nominals": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "List Nominal Codes",
        "description": "Return a list of Nominal Codes from the external data provider",
        "operationId": "NominalCodesExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/{taxYear}/{payPeriod}/{periodNumber}/journal": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Post Journal",
        "description": "Post a Journal for a payrun to the ExternalDataProvider\r\nA 200 response does not mean the journal was necessarily successfully posted.\r\nThe PayRunJournal is returned (without the Lines) so that you can inspect the status to determine success",
        "operationId": "PostJournalExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "To identify the PayRun",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "description": "To identify the PayRun",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "To identify the PayRun",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "force",
            "in": "query",
            "description": "Set to true if you want to force the journal to be posted even if it already has been",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunJournal"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/{taxYear}/{payPeriod}/{periodNumber}/payments": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Post Payments",
        "description": "Post Payments for a payrun to the ExternalDataProvider\r\nA 200 response does not mean the payments were necessarily successfully posted.\r\nThe BankPaymentInstruction is returned (without the payments) so that you can inspect the status to determine success",
        "operationId": "PostPaymentsExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "To identify the PayRun",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "description": "To identify the PayRun",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "To identify the PayRun",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "incEmployees",
            "in": "query",
            "description": "Include payments for employees",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "incHmrc",
            "in": "query",
            "description": "Include payments for HMRC (if any)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "incPensions",
            "in": "query",
            "description": "Include payments for Pension Providers (if any)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "incAeos",
            "in": "query",
            "description": "Include any payment due as a result of AttachmentOrders (if any)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "incDeductions",
            "in": "query",
            "description": "Include any payment due to Deductions that are set to be paid to a Payee (if any)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "force",
            "in": "query",
            "description": "Set to true if you want to force the payments to be posted even if it already has been",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "paymentDate",
            "in": "query",
            "description": "Optional. If a value is provided then it'll be used in place of the payment date for the payment.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "Will indicate what version of the payrun will be the source for the payments. If left empty, will post full pay run payments.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankPaymentInstruction"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/employees": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "List Employees",
        "description": "Return a list of ExternalEmployeeMapping for Employees in the external data provider.\r\nThe metadata of the Item contains a field called externalId. This can be used to retrieve the full employee record.",
        "operationId": "EmployeesExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Import Employees",
        "description": "Import Employees from the external data provider.",
        "operationId": "ImportEmployeesExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The externalIds to import",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/employees/push": {
      "put": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push Employees",
        "description": "Push employees to the ExternalDataProvider.",
        "operationId": "PushEmployeesExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/payslips": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push Payslips",
        "description": "Push payslips to the ExternalDataProvider.",
        "operationId": "PushPayslipsExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "force",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/p45": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push P45",
        "description": "Push a P45 to the ExternalDataProvider.",
        "operationId": "PushP45ExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/p45s": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push P45s",
        "description": "Push P45s to the ExternalDataProvider.",
        "operationId": "PushP45sExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the External Provider to which you want to send P45s",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to send P45s",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The Pay Period (i.e, Monthly, Weekly) for which you want to send P45s",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "query",
            "description": "The Period (i.e, Tax Month, Tax Week) for which you want to send P45s",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "description": "The Tax Year for which you want to send P45s",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "description": "Indicates whether it uses first, second, third (etc.) PaySchedule for the PayPeriod for which you want to send P45s",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/p60": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push P60",
        "description": "Pushes a P60 to the ExternalDataProvider.",
        "operationId": "PushP60ExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/p60s": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push P60s",
        "description": "Pushes P60s to the ExternalDataProvider for all employees paid for a given tax year, provided they were paid during that tax year.",
        "operationId": "PushP60sExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/p11d": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push P11D",
        "description": "Pushes a P11D for the given employee to the ExternalDataProvider.",
        "operationId": "PushP11DExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/p11ds": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push P11Ds",
        "description": "Pushes all P11Ds for the given TaxYear to the ExternalDataProvider.",
        "operationId": "PushP11DsExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/pension-letter": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push Pension Letter",
        "description": "Pushes a Pension Letter for the given employee to the ExternalDataProvider.",
        "operationId": "PushPensionLetterExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "assessmentId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/pension-letters": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Push Pension Letters",
        "description": "Pushes a Pension Letters for the given employees to the ExternalDataProvider.",
        "operationId": "PushPensionLettersExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/employees/{employeeId}": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Get Employee",
        "description": "Return an ExternalEmployeeMapping for the specified Employee from the external data provider",
        "operationId": "EmployeeExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the employee in the external data provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalEmployeeMapping"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Update Employee",
        "description": "Update an ExternalEmployeeMapping to map/unmap/import/ignore an employee from an external data provider",
        "operationId": "UpdateEmployeeExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the employee in the external data provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalEmployeeMapping"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalEmployeeMapping"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalEmployeeMapping"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalEmployeeMapping"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalEmployeeMapping"
                }
              }
            }
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/employees/i/sync-all": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Sync Employees",
        "description": "Syncs data from the ExternalDataProvider to update all mapped employees",
        "operationId": "SyncAllEmployeesExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/employees/{employeeId}/sync": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Sync Employee",
        "description": "Syncs data from the ExternalDataProvider to update the specified mapped employee.\r\nAny changes made as a result of the sync are show in the metadata.logs property.",
        "operationId": "SyncEmployeeExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the employee in the external data provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Item"
                }
              }
            }
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/employees/{employeeId}/logs": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Get Employee Logs",
        "description": "Return a list of changes made locally to this employee based on changes in the external data provider",
        "operationId": "EmployeeLogsExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the employee in the external data provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/{taxYear}/{payPeriod}/{periodNumber}/leave": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Sync Leave",
        "description": "Sync Leave from the ExternalDataProvider for the specified PayRun.\r\nReturns a JSON object indicating how many Leaves have been created, updated or deleted, etc.",
        "operationId": "SyncLeaveExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/contributions/{taxYear}/{payPeriod}/{periodNumber}": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Contributions CSV File",
        "description": "Returns a CSV file containing contributions for the specified payrun in a format specific to the ExternalDataProvider",
        "operationId": "PensionContributionsCsvExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "schemeId",
            "in": "query",
            "description": "The Id of the Pension Scheme you want a file for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/time-and-attendance": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Get Time And Attendance Data",
        "description": "Return a list of PayOptionsImport representing Time and Attendance data from the specified ExternalDataProvider, for to specified date range",
        "operationId": "TimeAndAttendanceExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayOptionsImport"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/authorize": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Get Authorization Url",
        "description": "For ExternalDataProviders with an AuthScheme of OAuth1 or OAuth2.\r\nReturns a Url to redirect a user to in order to start the authorization process with the given ExternalDataProvider.\r\nOur API handles the response from the OAuth provider and processes it to obtain a token.\r\nThe user is then sent to the URL specified.",
        "operationId": "AuthorizeExternalData",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the ExternalDataProvider you want to authorize with.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "returnUrl",
            "in": "query",
            "description": "The URL to send the user to once the process is complete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Set Credentials",
        "description": "For ExternalDataProviders with an AuthScheme of Basic.\r\nSets the username and password for the service.",
        "operationId": "SetCredentialsExternalData",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the ExternalDataProvider you want to authorize with.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "username",
            "in": "query",
            "description": "The username for the ExternalDataProvider.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "password",
            "in": "query",
            "description": "The password for the ExternalDataProvider.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Any additional data that is needed (optional)",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/config": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Get Config Data",
        "description": "Returns any additional configuration data for the connection to the ExternalDataProvider.",
        "operationId": "GetConfigDataExternalData",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the ExternalDataProvider you want configuration data for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Set Config Data",
        "description": "Sets the additional configuration data for the connection to the ExternalDataProvider.\r\nOnly the value set in the userData field is updated",
        "operationId": "SetConfigDataExternalData",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the ExternalDataProvider you want configuration data for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": { }
            },
            "application/json": {
              "schema": { }
            },
            "text/json": {
              "schema": { }
            },
            "application/*+json": {
              "schema": { }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/external-data/{id}/disconnect": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Disconnect",
        "description": "Disconnect from the external provider and revoke any OAuth token that has been received.",
        "operationId": "DisconnectExternalData",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the ExternalDataProvider you want to disconnect from.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/external-data/{id}/respond": {
      "get": {
        "tags": [
          "ExternalData"
        ],
        "summary": "3rd Party Response",
        "description": "This endpoint is used by third parties to respond to an oAuth authorization request. You do not need to use this",
        "operationId": "RespondExternalData",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "error",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/external-data/create-stackone-session-token": {
      "post": {
        "tags": [
          "ExternalData"
        ],
        "summary": "Get StackOne session token",
        "description": "Return a session token from the StackOne client to connect to StackOne.",
        "operationId": "CreateStackOneSessionTokenExternalData",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the employer in the external data provider",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "categories",
            "in": "query",
            "description": "A list of category for the premium connection",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}": {
      "post": {
        "tags": [
          "Fps"
        ],
        "summary": "Create FPS",
        "description": "Creates a new Full Payment Submission.  This is limited to corrections, to a previous year, for a single employee.",
        "operationId": "CreateFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fps"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Fps"
        ],
        "summary": "List FPS",
        "description": "Returns all Full Payment Submissions for the given tax year.",
        "operationId": "ListFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/multiple/{taxYear}": {
      "post": {
        "tags": [
          "Fps"
        ],
        "summary": "Create FPS with multiple employees",
        "description": "Creates a new Full Payment Submission.  This is limited to corrections, to a previous year, for multiple employees.",
        "operationId": "CreateFpsWithMultipleEmployeesFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}/{id}": {
      "put": {
        "tags": [
          "Fps"
        ],
        "summary": "Update FPS",
        "description": "Updates an existing Full Payment Submission.",
        "operationId": "UpdateFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fps"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Fps"
        ],
        "summary": "Get FPS",
        "description": "Retrieves the Full Payment Submission specified",
        "operationId": "GetFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fps"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fps"
        ],
        "summary": "Delete FPS",
        "description": "Not implemented, FPSes cannot be deleted",
        "operationId": "DeleteFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/multiple/{taxYear}/{id}": {
      "put": {
        "tags": [
          "Fps"
        ],
        "summary": "Update FPS with multiple employees",
        "description": "Updates an existing Full Payment Submission with multiple employees.",
        "operationId": "UpdateFpsWithMultipleEmployeesFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Fps"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}/{id}/xml/request": {
      "get": {
        "tags": [
          "Fps"
        ],
        "summary": "Get XML Request",
        "description": "Returns the XML request that was or will be sent to HMRC for this RTI document.\r\nAlthough the value is XML, it is returned as a JSON string.",
        "operationId": "GetXmlRequestFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "compressed",
            "in": "query",
            "description": "Indicates whether the FPS XML should be in compressed format.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}/mostrecentforemployee/{employeeId}": {
      "get": {
        "tags": [
          "Fps"
        ],
        "summary": "Get most recent FPS for Employee",
        "description": "Returns the most recent Full Payment Submission that includes the specified employee",
        "operationId": "MostRecentForEmployeeFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "correction",
            "in": "query",
            "description": "Only search for FPS's submitted as a correction to a previous year",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Item"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}/mostrecentforemployees": {
      "post": {
        "tags": [
          "Fps"
        ],
        "summary": "Get most recent FPS for Employees",
        "description": "Returns the most recent Full Payment Submission that includes the specified employees",
        "operationId": "MostRecentForEmployeesFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "correction",
            "in": "query",
            "description": "Only search for FPS's submitted as a correction to a previous year",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fps"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}/employee/{employeeId}": {
      "get": {
        "tags": [
          "Fps"
        ],
        "summary": "Get all FPS for Employee",
        "description": "Returns all the Full Payment Submission that includes the specified employee",
        "operationId": "GetFpsesForEmployeeFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Fps"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}/{id}/submit": {
      "post": {
        "tags": [
          "Fps"
        ],
        "summary": "Submit FPS",
        "description": "Submits an existing Full Payment Submission to HMRC.",
        "operationId": "SubmitFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "force",
            "in": "query",
            "description": "If the FPS has already been accepted then you will need to set this to true to force it to be resubmitted",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/{taxYear}/{id}/markasaccepted": {
      "post": {
        "tags": [
          "Fps"
        ],
        "summary": "Mark as Sent",
        "description": "Marks an Full Payment Submission as having been sent to HMRC and accepted by them.\r\nYou only use this method if the FPS has been submitted via an external system.\r\nIt will automatically be updated as Sent and/or Accepted if it's submitted via this API.",
        "operationId": "MarkAsAcceptedFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fps"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/fps/requiringattention": {
      "get": {
        "tags": [
          "Fps"
        ],
        "summary": "FPS Requiring Attention",
        "description": "Returns all Full Payment Submissions that have a Submission Status of NotSubmitted or ErrorResponse",
        "operationId": "RequiringAttentionFps",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/hmrcpayment/{taxYear}": {
      "get": {
        "tags": [
          "HmrcPayment"
        ],
        "summary": "List HmrcLiabilities",
        "description": "Lists all periods for which a payment is due to HMRC in the given TaxYear",
        "operationId": "IndexHmrcPayment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list HMRC Payments",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/hmrcpayment/{taxYear}/{periodEnding}": {
      "get": {
        "tags": [
          "HmrcPayment"
        ],
        "summary": "Get HmrcLiability",
        "description": "Gets the HmrcLiability record for the period ending on the date specified.",
        "operationId": "GetHmrcPayment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "periodEnding",
            "in": "path",
            "description": "The final date of the month or quarter that the HmrcLiability is for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HmrcLiability"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "HmrcPayment"
        ],
        "summary": "Update HmrcLiability",
        "description": "Updates the editable fields of a HmrcLiability (ie, Adjustment, CISDeductionsSuffered, etc)",
        "operationId": "UpdateHmrcPayment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "periodEnding",
            "in": "path",
            "description": "The final date of the month or quarter that the HmrcLiability is for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/HmrcLiability"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HmrcLiability"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/HmrcLiability"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/HmrcLiability"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HmrcLiability"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/hmrcpayment/{taxYear}/{periodEnding}/bankpayment": {
      "get": {
        "tags": [
          "HmrcPayment"
        ],
        "summary": "HMRC Bank Payment",
        "description": "Returns a payments file for the HMRC payment that needs to be made",
        "operationId": "BankPaymentHmrcPayment",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "periodEnding",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bankHoliday",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/BankHolidayCollection"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankPaymentInstructionReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/BankPaymentInstructionReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/holidayscheme": {
      "get": {
        "tags": [
          "HolidayScheme"
        ],
        "summary": "Get holiday scheme",
        "operationId": "GetHolidayScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.HolidaySchemeResponse"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "HolidayScheme"
        ],
        "summary": "Create holiday scheme",
        "operationId": "CreateHolidayScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.HolidaySchemeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/holidayscheme/{id}": {
      "get": {
        "tags": [
          "HolidayScheme"
        ],
        "summary": "Get holiday scheme by Id",
        "operationId": "GetByIdHolidayScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.HolidaySchemeResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "HolidayScheme"
        ],
        "summary": "Update holiday scheme",
        "operationId": "UpdateHolidayScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.HolidaySchemeRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.HolidaySchemeResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "HolidayScheme"
        ],
        "summary": "Delete holiday scheme",
        "operationId": "DeleteHolidayScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/import/payments/mappings": {
      "get": {
        "tags": [
          "Import"
        ],
        "summary": "List PaymentsCsvMappings",
        "description": "Lists all PaymentsCsvMappings for an Employer.",
        "operationId": "ListPaymentsCsvMappingsImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list mappings",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Create PaymentsCsvMapping",
        "description": "Creates a new PaymentsCsvMapping for the Employer.",
        "operationId": "CreatePaymentsCsvMappingImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/employers/{employerId}/import/payments/mappings/{id}": {
      "get": {
        "tags": [
          "Import"
        ],
        "summary": "Get PaymentsCsvMapping",
        "description": "Gets the PaymentsCsvMapping specified.",
        "operationId": "PaymentsCsvMappingImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PaymentCsvMapping belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsCsvMapping"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Import"
        ],
        "summary": "Update PaymentsCsvMapping",
        "description": "Updates the PaymentsCsvMapping specified.",
        "operationId": "UpdatePaymentsCsvMappingImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PaymentsCsvMapping belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCsvMapping"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsCsvMapping"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Import"
        ],
        "summary": "Delete PaymentsCsvMapping",
        "description": "Deletes the specified PaymentsCsvMapping.",
        "operationId": "DeletePaymentCsvMappingImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/import/payments/mappings/{id}/csv": {
      "get": {
        "tags": [
          "Import"
        ],
        "summary": "Get PaymentsCsvMapping CSV File",
        "description": "Gets a CSV file in the format needed to import for the specified PaymentsCsvMapping\r\nThis is only available for PaymentsCsvMapping with a Type of ColumnBased",
        "operationId": "PaymentsCsvMappingCsvFileImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PaymentCsvMapping belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/import/pay": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import Pay To Employee",
        "description": "Takes a list PayOptionsImport and updates employees PayOptions to use the values provided.",
        "operationId": "ImportEmployeePayImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "linesOnly",
            "in": "query",
            "description": "If set to true then only lines will be imported. Changes to regular pay will be ignored. Defaults to false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "append",
            "in": "query",
            "description": "If set to true then the lines submitted will be appended to existing lines rather than replace them. Defaults to false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "updateExisting",
            "in": "query",
            "description": "If set to true then any submitted lines that match the paycode of one (and only one) existing line will be used to update the value of that lines. Any unmatched lines will be appended to existing lines.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "validateOnly",
            "in": "query",
            "description": "If set to true, the import will only be validated for data correctness. If false, the import is validated and then imported.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/import/employees/async": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import Employees Asynchronously",
        "description": "Allows the import of employees asynchronously from a CSV file.",
        "operationId": "EmployeeImportCsvImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The CSV format.",
            "schema": {
              "$ref": "#/components/schemas/CsvFileFormat"
            }
          },
          {
            "name": "allowUpdates",
            "in": "query",
            "description": "If set to true, and if the payroll code matches an existing employee, then that employee will be updated.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/import/import": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import EmployeeRoles from csv file",
        "description": "Import Employee Roles from a CSV file.",
        "operationId": "ImportRolesImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "previewOnly",
            "in": "query",
            "description": "Set to true and nothing will be imported but you'll be shown a preview of the data.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "allowUpdates",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/import/pensionmemberships": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import PensionMemberships from csv file",
        "description": "Import Pension Memberships from a CSV file.",
        "operationId": "ImportPensionMembershipsImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "previewOnly",
            "in": "query",
            "description": "Set to true and nothing will be imported but you'll be shown a preview of the data.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "allowUpdates",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/import/pensionmemberships/async": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import PensionMemberships from csv file (async)",
        "description": "Import Pension Memberships from a CSV file.",
        "operationId": "PensionImportCsvImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowUpdates",
            "in": "query",
            "description": "If set to true, and if the pension membership matches an existing one, then that membership will be updated.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/import/benefits": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import Benefits",
        "description": "Allows the import of benefits asynchronously.",
        "operationId": "ImportBenefitsImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The import benefit items.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.BenefitImportRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.BenefitImportRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.BenefitImportRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.BenefitImportRequest"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/import/leave": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import Leave Asynchronously",
        "operationId": "ImportLeaveImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The import leave items.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.LeaveImportRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.LeaveImportRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.LeaveImportRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.LeaveImportRequest"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/import/payments": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import Permanent Addition and Deductions Payments",
        "description": "Allows the import of permanent addition and deductions payments asynchronously.",
        "operationId": "ImportPaymentsImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "updateOpenPayrun",
            "in": "query",
            "description": "If set to true, and there are any open pay runs, the imported values will be applied to those pay runs.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "description": "The import payment items.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PaymentImportRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PaymentImportRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PaymentImportRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PaymentImportRequest"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/import/{taxYear}/{payPeriod}/{periodNumber}/{ordinal}/payrun-overrides": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import Pay Run Overrides",
        "description": "Allows the import of payrun overrides asynchronously.",
        "operationId": "ImportPayRunOverridesImport",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The tax year for the pay run overrides import.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The period number for the pay run overrides import.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "description": "The period number for the pay run overrides import.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "The ordinal for the pay run overrides import.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The import payrun ovverides items.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayRunOverridesImportRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayRunOverridesImportRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayRunOverridesImportRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayRunOverridesImportRequest"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/invitation": {
      "get": {
        "tags": [
          "Invitation"
        ],
        "summary": "List Invitations",
        "description": "Lists all Invitations for an Employer.\r\nOnly unaccepted Invitations are listed as they are deleted once they've been accepted.",
        "operationId": "IndexInvitation",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Pay Codes",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Invitation"
        ],
        "summary": "Create Invitation",
        "description": "Creates a new Invitation for the Employer.",
        "operationId": "CreateInvitation",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "autoAccept",
            "in": "query",
            "description": "This is useful for when you want to invite a user to an employer and automatically accept the invitation.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Invitation"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Invitation"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Invitation"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Invitation"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Invitation"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/invitation/{id}": {
      "get": {
        "tags": [
          "Invitation"
        ],
        "summary": "Get Invitation",
        "description": "Gets the Invitation specified.",
        "operationId": "GetInvitation",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Invitation belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Invitation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Invitation"
        ],
        "summary": "Delete Invitation",
        "description": "Deletes the specified Invitation.",
        "operationId": "DeleteInvitation",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/invitations/{id}": {
      "post": {
        "tags": [
          "Invitation"
        ],
        "summary": "Accept Invitation",
        "description": "Accepts the Invitation.\r\nThe user making this API call must have the email address that the invite was created for and the email address must be verified.",
        "operationId": "AcceptInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "acceptInvitation",
            "in": "query",
            "description": "Set to true to accept the invitation or false to decline it.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/jobs/{jobId}": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "Get Job",
        "description": "Returns a job.",
        "operationId": "GetJobJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The job identifier.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/jobs": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "List Jobs",
        "description": "Returns a list of Jobs for all Employers that belong to the User with pagination.",
        "operationId": "GetJobsListJob",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "description": "The employer identifier.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "jobType",
            "in": "query",
            "description": "Type of the job.",
            "schema": {
              "$ref": "#/components/schemas/JobType"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "description": "The page number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Size of the page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.JobResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/jobs/{jobId}/document": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "Get Job file",
        "description": "Returns the file generated for a successfully completed Job of type Report as a string representing a filestream.",
        "operationId": "GetReportJobResultJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The job identifier.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/jobs/completed": {
      "delete": {
        "tags": [
          "Job"
        ],
        "summary": "Delete Completed Jobs",
        "description": "Deletes the users completed Jobs.",
        "operationId": "DeleteCompletedJobsJob",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/jobs/{jobId}/errors": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "Get Job Errors",
        "description": "Returns a list of errors for a job.",
        "operationId": "GetJobErrorsByJobIdJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The job identifier.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.JobErrorResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/journaltemplate": {
      "get": {
        "tags": [
          "JournalTemplate"
        ],
        "summary": "Get Journal Template",
        "description": "Get Journal Template for an Employer.",
        "operationId": "GetJournalTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get Journal Template",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTemplateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTemplateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTemplateResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "JournalTemplate"
        ],
        "summary": "Create Journal Template",
        "description": "Create Journal Template for an Employer.",
        "operationId": "CreateJournalTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create Journal Template",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/JournalTemplate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JournalTemplate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/JournalTemplate"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/journaltemplate/{id}": {
      "put": {
        "tags": [
          "JournalTemplate"
        ],
        "summary": "Update Journal Template",
        "description": "Updates Specified Journal Template for the Employer.",
        "operationId": "UpdateJournalTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update Journal Template",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTemplateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTemplateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTemplateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/journaltokens": {
      "get": {
        "tags": [
          "JournalToken"
        ],
        "summary": "List Journal Tokens",
        "description": "List Journal Tokens for an Employer.",
        "operationId": "IndexJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want list of Journal Tokens",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.JournalTokenResponseItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.JournalTokenResponseItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.JournalTokenResponseItem"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Create Journal Token",
        "description": "Create Journal Token for an Employer.",
        "operationId": "CreateJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create Journal Token",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/journaltokens/{id}": {
      "get": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Get Journal Token",
        "description": "Get Specified Journal Token for an Employer.",
        "operationId": "GetJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get Journal Token",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Journal Tokens for which you want to get Journal Token",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Update Journal Token",
        "description": "Updates Specified Journal Token for the Employer.",
        "operationId": "UpdateJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.JournalTokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JournalTokenResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Delete Journal Token",
        "description": "Deletes the specified Journal Token.",
        "operationId": "DeleteJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/journaltokens/{departmentId}/departmentjournaloverrides": {
      "get": {
        "tags": [
          "JournalToken"
        ],
        "summary": "List Department Journal Overrides",
        "description": "List Journal Overrides for an Department.",
        "operationId": "GetDepartmentJournalOverridesListJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want list of Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "departmentId",
            "in": "path",
            "description": "The Id of the Department for which you want list of Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or Department Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponseItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponseItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponseItem"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Create Department Journal Overrides",
        "description": "Create Journal Overrides for an Department.",
        "operationId": "CreateDepartmentJournalOverridesJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "departmentId",
            "in": "path",
            "description": "The Id of the Department for which you want to create Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or Department Not Found"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponse"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Update Department Journal Overrides",
        "description": "Updates Journal Overrides for the Department.",
        "operationId": "UpdateDepartmentJournalOverridesJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "departmentId",
            "in": "path",
            "description": "The Id of the Department for which you want to update Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesUpdateRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesUpdateRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesUpdateRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or Department Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.DepartmentJournalOverridesResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/journaltokens/{costCentreId}/costcentrejournaloverrides": {
      "get": {
        "tags": [
          "JournalToken"
        ],
        "summary": "List CostCentre Journal Overrides",
        "description": "List Journal Overrides for an CostCentre.",
        "operationId": "GetCostCentreJournalOverridesListJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want list of Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "costCentreId",
            "in": "path",
            "description": "The Id of the CostCentre for which you want list of Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or CostCentre Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponseItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponseItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponseItem"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Create CostCentre Journal Overrides",
        "description": "Create Journal Overrides for an CostCentre.",
        "operationId": "CreateCostCentreJournalOverridesJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "costCentreId",
            "in": "path",
            "description": "The Id of the CostCentre for which you want to create Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or CostCentre Not Found"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponse"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "JournalToken"
        ],
        "summary": "Update CostCentre Journal Overrides",
        "description": "Updates Journal Overrides for the CostCentre.",
        "operationId": "UpdateCostCentreJournalOverridesJournalToken",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "costCentreId",
            "in": "path",
            "description": "The Id of the CostCentre for which you want to update Journal Overrides",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesUpdateRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesUpdateRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesUpdateRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or CostCentre Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.CostCentreJournalOverridesResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave": {
      "post": {
        "tags": [
          "Leave"
        ],
        "summary": "Create Leave",
        "description": "Creates Leave for the Employee",
        "operationId": "CreateLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            }
          }
        },
        "responses": {
          "409": {
            "description": "Conflict"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "get": {
        "tags": [
          "Leave"
        ],
        "summary": "List Leave",
        "description": "Lists all Leave for the Employee",
        "operationId": "IndexLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave/{id}": {
      "get": {
        "tags": [
          "Leave"
        ],
        "summary": "Get Leave",
        "description": "Gets the Leave specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "GetLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Leave you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Leave"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "Leave"
        ],
        "summary": "Update Leave",
        "operationId": "UpdateLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Leave you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Leave"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Leave"
        ],
        "summary": "Delete Leave",
        "description": "Deletes the Leave specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "DeleteLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Leave you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "409": {
            "description": "Conflict"
          },
          "400": {
            "description": "Bad Request"
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave/findlinkedpiw": {
      "get": {
        "tags": [
          "Leave"
        ],
        "summary": "Find Linked Piw",
        "description": "Finds the linked piw the supplied leave would linked to, or null if none found",
        "operationId": "FindLinkedPiwLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "leaveType",
            "in": "query",
            "description": "The type of leave to you want to find a linked Piw for.",
            "schema": {
              "$ref": "#/components/schemas/LeaveType"
            }
          },
          {
            "name": "leavePayType",
            "in": "query",
            "description": "The type of leave pay to you want to find a linked Piw for.",
            "schema": {
              "$ref": "#/components/schemas/LeavePayType"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "The leave from date you want to find a linked Piw for.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "The leave to date you want to find a linked Piw for.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedPiw"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave/{id}/documents": {
      "post": {
        "tags": [
          "Leave"
        ],
        "summary": "Add Document",
        "description": "Adds document to the leave",
        "operationId": "AddDocumentLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the leave you want to attach documents to",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave/{id}/documents/{documentId}": {
      "delete": {
        "tags": [
          "Leave"
        ],
        "summary": "Delete Leave Document",
        "description": "Deletes the document specified by the documentId for the Leave specified by the Id",
        "operationId": "DeleteDocumentLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "Leave"
        ],
        "summary": "Get Leave Document",
        "description": "Gets the document specified by the documentId for the Leave specified by the Id",
        "operationId": "GetDocumentLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave/statutorymaternityschedule": {
      "get": {
        "tags": [
          "Leave"
        ],
        "summary": "List Statutory Maternity Leave History",
        "description": "Lists all Statutory Maternity leave history specified for an Employee.",
        "operationId": "GetMaternityLeaveScheduleLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "babyDueDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "leaveFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "leaveTo",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "leaveType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/LeaveType"
            }
          },
          {
            "name": "leavePayType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/LeavePayType"
            }
          },
          {
            "name": "payFrequency",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/StatPayFrequency"
            }
          },
          {
            "name": "averageWeeklyEarnings",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double",
              "default": 0
            }
          },
          {
            "name": "isReversed",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "leaveId",
            "in": "query",
            "description": "Supply the leave ID to include any SMP overrides in the maternity pay schedule. Omit to retrieve the base schedule.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave/occupationalmaternityschedule/{id}": {
      "get": {
        "tags": [
          "Leave"
        ],
        "summary": "List Occupational Maternity Leave History",
        "description": "Lists all occupational Maternity leave history specified for an Employee.",
        "operationId": "GetOccupationalMaternityScheduleLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/leave/{id}/role/{roleId}/assumedpensionablepay": {
      "get": {
        "tags": [
          "Leave"
        ],
        "summary": "Get Role Assumed Pensionable Pay",
        "description": "Calculates the assumed pensionable pay for a specific employee role during a leave period.\r\nFor existing leaves (when id is provided), uses the leave's existing configuration.\r\nFor new leaves (when id is empty), calculates based on the provided leave type, pay type, and period parameters.\r\nOnly supports roles associated with LGPS schemes that allow automatic APP calculation.",
        "operationId": "GetRoleAssumedPensionablePayLeave",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The unique identifier of the employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The unique identifier of the employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the leave record (empty GUID for new leaves)",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleId",
            "in": "path",
            "description": "The unique identifier of the employee role for which to calculate assumed pensionable pay",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The pay period (required for new leaves, ignored for existing leaves)",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "leaveType",
            "in": "query",
            "description": "The type of leave (required for new leaves, ignored for existing leaves)",
            "schema": {
              "$ref": "#/components/schemas/LeaveType"
            }
          },
          {
            "name": "leavePayType",
            "in": "query",
            "description": "The leave payment type (required for new leaves, ignored for existing leaves)",
            "schema": {
              "$ref": "#/components/schemas/LeavePayType"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "The leave start date (required for new leaves, ignored for existing leaves)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/loans": {
      "post": {
        "tags": [
          "Loan"
        ],
        "summary": "Create Loan",
        "description": "Creates a Loan for the Employee",
        "operationId": "CreateLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "get": {
        "tags": [
          "Loan"
        ],
        "summary": "List Loans",
        "description": "Lists all AttachmentOrders for the Employee",
        "operationId": "IndexLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/loans/{id}": {
      "get": {
        "tags": [
          "Loan"
        ],
        "summary": "Get Loan",
        "description": "Gets the Loan specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "GetLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Loan you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Loan"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "Loan"
        ],
        "summary": "Update Loan",
        "operationId": "UpdateLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Loan you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Loan"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Loan"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Loan"
        ],
        "summary": "Delete Loan",
        "description": "Deletes the Loan specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "DeleteLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Loan you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/loans/{id}/documents": {
      "post": {
        "tags": [
          "Loan"
        ],
        "summary": "Add Document",
        "description": "Adds document to the Loan",
        "operationId": "AddDocumentLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Loan you want to attach documents to",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/loans/{id}/documents/{documentId}": {
      "delete": {
        "tags": [
          "Loan"
        ],
        "summary": "Delete Loan Document",
        "description": "Deletes the document specified by the documentId for the Loan specified by the Id",
        "operationId": "DeleteDocumentLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "Loan"
        ],
        "summary": "Get Loan Document",
        "description": "Gets the document specified by the documentId for the Loan specified by the Id",
        "operationId": "GetDocumentLoan",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/notes": {
      "post": {
        "tags": [
          "Note"
        ],
        "summary": "Create Note",
        "description": "Creates a Note for the Employee",
        "operationId": "CreateNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "get": {
        "tags": [
          "Note"
        ],
        "summary": "List Notes",
        "description": "Lists all Note for the Employee",
        "operationId": "IndexNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/notes/{id}": {
      "get": {
        "tags": [
          "Note"
        ],
        "summary": "Get Note",
        "description": "Gets the Note specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "GetNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Note you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Note"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "Note"
        ],
        "summary": "Update Note",
        "operationId": "UpdateNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Note you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Note"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Note"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Note"
        ],
        "summary": "Delete Note",
        "description": "Deletes the Note specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "DeleteNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Note you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/notes/{id}/documents": {
      "post": {
        "tags": [
          "Note"
        ],
        "summary": "Add Document",
        "description": "Adds document to the Note",
        "operationId": "AddDocumentNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Note you want to attach documents to",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/notes/{id}/documents/{documentId}": {
      "delete": {
        "tags": [
          "Note"
        ],
        "summary": "Delete Note Document",
        "description": "Deletes the document specified by the documentId for the Note specified by the Id",
        "operationId": "DeleteDocumentNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "Note"
        ],
        "summary": "Get Note Document",
        "description": "Gets the document specified by the documentId for the Note specified by the Id",
        "operationId": "GetDocumentNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/rti/nvr/{taxYear}": {
      "get": {
        "tags": [
          "Nvr"
        ],
        "summary": "List NVR",
        "description": "Returns all NiNo Verification Requests for the given tax year.",
        "operationId": "ListNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Nvr"
        ],
        "summary": "Create NVR",
        "description": "Creates a new NiNo Verification Request.",
        "operationId": "CreateNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Nvr"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/nvr/{taxYear}/{id}": {
      "put": {
        "tags": [
          "Nvr"
        ],
        "summary": "Update NVR",
        "description": "Updates an existing NiNo Verification Request.",
        "operationId": "UpdateNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Nvr"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Nvr"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Nvr"
        ],
        "summary": "Get NVR",
        "description": "Retrieves the NiNo Verification Request.",
        "operationId": "GetNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Nvr"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Nvr"
        ],
        "summary": "Delete NVR",
        "description": "Deletes the NVR.",
        "operationId": "DeleteNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/employers/{employerId}/rti/nvr/{taxYear}/{id}/xml/request": {
      "get": {
        "tags": [
          "Nvr"
        ],
        "summary": "Get XML Request",
        "description": "Returns the XML request that was or will be sent to HMRC for this RTI document.\r\nAlthough the value is XML, it is returned as a JSON string.",
        "operationId": "GetXmlRequestNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/nvr/{taxYear}/{id}/submit": {
      "post": {
        "tags": [
          "Nvr"
        ],
        "summary": "Submit an existing NVR",
        "description": "Submits an existing NiNo Verification Request to HMRC.",
        "operationId": "SubmitNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "force",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Nvr"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/nvr/{taxYear}/{id}/markasaccepted": {
      "post": {
        "tags": [
          "Nvr"
        ],
        "summary": "Mark as Sent",
        "description": "Marks a  NiNo Verification Request as having been sent to HMRC and accepted by them\r\nYou only use this method if the NVR has been submitted via an external system.\r\nIt will automatically be updated as Sent and/or Accepted if it's submitted via this API.",
        "operationId": "MarkAsAcceptedNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Nvr"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/rti/nvr/requiringattention": {
      "get": {
        "tags": [
          "Nvr"
        ],
        "summary": "NVR Requiring Attention",
        "description": "Returns all NiNo Verification Requests that have a Submission Status of NotSubmitted or ErrorResponse",
        "operationId": "RequiringAttentionNvr",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/occupationalpolicies": {
      "get": {
        "tags": [
          "OccupationalPolicy"
        ],
        "summary": "List Occupational Policies",
        "description": "Lists all Occupational Policies for an Employer.",
        "operationId": "IndexOccupationalPolicy",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or Occupational Policy Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "tags": [
          "OccupationalPolicy"
        ],
        "summary": "Create Occupational Policy",
        "description": "Creates a new Occupational Policy for the Employer.",
        "operationId": "CreateOccupationalPolicy",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalPolicy"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Occupational Policy Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/occupationalpolicies/{id}": {
      "get": {
        "tags": [
          "OccupationalPolicy"
        ],
        "summary": "Get Occupational Policy",
        "description": "Gets the Occupational Policy specified.",
        "operationId": "GetOccupationalPolicy",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Occupational Policy belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Occupational Policy which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalPolicy"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Occupational Policy Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "OccupationalPolicy"
        ],
        "summary": "Update Occupational Policy",
        "description": "Updates a Occupational Policy for the Employer.",
        "operationId": "UpdateOccupationalPolicy",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Occupational Policy belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Occupational Policy which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalPolicy"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalPolicy"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Occupational Policy Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "OccupationalPolicy"
        ],
        "summary": "Delete Occupational Policy",
        "description": "Deletes the specified Occupational Policy.",
        "operationId": "DeleteOccupationalPolicy",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Occupational Policy belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Occupational Policy which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or Occupational Policy Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/occupationalsickleavehistory/employees/{employeeId}": {
      "get": {
        "tags": [
          "OccupationalSickLeaveHistory"
        ],
        "summary": "List OccupationalSickLeaveHistory",
        "description": "Lists all OccupationalSickLeaveHistory for the Employee specified",
        "operationId": "OccupationalSickLeaveHistoryOccupationalSickLeaveHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "OccupationalSickLeaveHistory"
        ],
        "summary": "Create OccupationalSickLeaveHistory",
        "description": "Creates Occupational sick leave history for the Employee.",
        "operationId": "CreateOccupationalSickLeaveHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee to which the Occupational sick leave history belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/occupationalsickleavehistory/employees/{employeeId}/{id}": {
      "get": {
        "tags": [
          "OccupationalSickLeaveHistory"
        ],
        "summary": "Get OccupationalSickLeaveHistory",
        "description": "Gets a occupational sick leave for the employee and employer.",
        "operationId": "GetOccupationalSickLeaveHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Occupational leave history which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "OccupationalSickLeaveHistory"
        ],
        "summary": "Update OccupationalSickLeaveHistory",
        "description": "Updates a occupational sick leave for the employee and employer.",
        "operationId": "UpdateOccupationalSickLeaveHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Occupational leave history which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "OccupationalSickLeaveHistory"
        ],
        "summary": "Delete OccupationalSickLeaveHistory",
        "description": "Deletes the specified Occupational leave history record.",
        "operationId": "DeleteOccupationalSickLeaveHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Occupational sick leave which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/occupationalsickleavehistory/import": {
      "post": {
        "tags": [
          "OccupationalSickLeaveHistory"
        ],
        "summary": "Upload OccupationalSickLeaveHistory",
        "description": "Uploads new Occupational sick leave history for the Employer against specific occupational policy.",
        "operationId": "UploadOSPHistoryOccupationalSickLeaveHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the occupational sick leave history is to be uploaded.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OccupationalSickLeaveHistory"
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/occupationalsickleavehistory/importfile": {
      "post": {
        "tags": [
          "OccupationalSickLeaveHistory"
        ],
        "summary": "Import OccupationalSickLeaveHistory from csv file",
        "description": "Import Occupational Sick Leave History from a CSV file.",
        "operationId": "ImportOccupationalSickLeaveHistoryCsvOccupationalSickLeaveHistory",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/openingBalances": {
      "get": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Get Opening Balances",
        "description": "Returns the Opening Balances for an Employee",
        "operationId": "GetOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve Opening Balances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Update Opening Balances",
        "description": "Updates the Opening Balances for an Employee.",
        "operationId": "UpdateOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to update Opening Balances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/openingBalances/nic/{taxYear}": {
      "post": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Create NicSummary",
        "description": "Creates a NicSummary for for an Employee.",
        "operationId": "CreateNicSummaryOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to create the Nic Summary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the NicSummary applies to",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Get NicSummaries",
        "description": "Returns the NicSummaries for an Employee for a given TaxYear.\r\nIf the TaxYear is the same as on their OpeningBalances then the NicSummaries will be the same as shown there.",
        "operationId": "GetNicSummariesOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve Opening Balances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the NicSummaries apply to",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "openingBalancesOnly",
            "in": "query",
            "description": "Limit the results to opening balance year to date",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NicSummary"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NicSummary"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NicSummary"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Update NicSummaries",
        "description": "Updates the NicSummaries for an Employee for a given TaxYear.\r\nIf the TaxYear is the same as on their OpeningBalances then the NicSummaries there will also be updated.",
        "operationId": "UpdateNicSummariesOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve Opening Balances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the NicSummaries apply to",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NicSummary"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NicSummary"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NicSummary"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/openingBalances/nic/{taxYear}/{uniqueId}": {
      "get": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Get NicSummary",
        "description": "Returns a NicSummary for a Unique Id for an Employee.",
        "operationId": "GetNicSummaryOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve the Nic Summary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the NicSummary applies to",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "uniqueId",
            "in": "path",
            "description": "The Id of the NicSummary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Update NicSummary",
        "description": "Update a NicSummary for a Unique Id for an Employee.",
        "operationId": "UpdateNicSummaryOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to update the Nic Summary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the NicSummary applies to",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "uniqueId",
            "in": "path",
            "description": "The Id of the NicSummary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NicSummary"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NicSummary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Delete NicSummary",
        "description": "Delete a NicSummary for a Unique Id for an Employee.",
        "operationId": "DeleteNicSummaryOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to delete the Nic Summary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the NicSummary applies to",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "uniqueId",
            "in": "path",
            "description": "The Id of the NicSummary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/openingBalances/p45": {
      "put": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Update P45 Value",
        "description": "Updates the P45 Values on the Opening Balances for an Employee.\r\nThis would ideally be done when the Opening Balances are updated but if payruns have already been started for the employee then Opening Balances can't be updated - hence this API call just to update the P45 values.\r\nThere must be a currently open PayRun for the employee.\r\nOnly the PreviousEmployerGross and PreviousEmployerTax properties of the submitted OpeningBalances model are updated.",
        "operationId": "UpdateP45OpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to update P45 figures",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/openingBalances/terminationpayments": {
      "put": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Update Termination Pay",
        "description": "Updates the Termination Pay value on the Opening Balances for an Employee.\r\nThis would ideally be done when the Opening Balances are updated but if payruns have already been started for the employee then Opening Balances can't be updated - hence this API call just to update the Termination Pay value.\r\nOnly the TerminationPayments property of the submitted OpeningBalances model is updated.",
        "operationId": "UpdateTerminationPaymentsOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to update Termination Payments",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OpeningBalances"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalances"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/openingbalances/{taxYear}": {
      "get": {
        "tags": [
          "OpeningBalances"
        ],
        "summary": "Totals of employee opening balances for a tax year",
        "description": "Totals of Employee Opening Balances in the specified TaxYear",
        "operationId": "GetOpeningBalancesTotalsOpeningBalances",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to search.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear for which you want to Opening Balances totals.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalancesTotals"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalancesTotals"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpeningBalancesTotals"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/p11history": {
      "post": {
        "tags": [
          "P11History"
        ],
        "summary": "Create P11 Historical data",
        "operationId": "CreateP11History",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.P11HistoryRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.P11HistoryRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.P11HistoryRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.P11HistoryRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "P11History"
        ],
        "summary": "Retrieve P11 Historical data",
        "operationId": "ListPagedP11History",
        "parameters": [
          {
            "name": "pageNum",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.P11HistoryResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/p11history/{id}": {
      "delete": {
        "tags": [
          "P11History"
        ],
        "summary": "Delete P11 Historical data",
        "operationId": "DeleteP11History",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "put": {
        "tags": [
          "P11History"
        ],
        "summary": "Update P11 Historical entry",
        "operationId": "UpdateP11History",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The unique id of the record",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.P11HistoryRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.P11HistoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.P11HistoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.P11HistoryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.P11HistoryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.P11HistoryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/paycodes": {
      "get": {
        "tags": [
          "PayCode"
        ],
        "summary": "List PayCodes",
        "description": "Lists all PayCodes for the Employer specified.",
        "operationId": "IndexPayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Pay Codes",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "verbose",
            "in": "query",
            "description": "If provided and set to true then full details of all Pay Codes will be returned instead of just a summary",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayCode"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PayCode"
        ],
        "summary": "Create PayCode",
        "description": "Creates a new PayCode for the Employer.",
        "operationId": "CreatePayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCode"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/paycodes/{code}": {
      "get": {
        "tags": [
          "PayCode"
        ],
        "summary": "Get PayCode (deprecated)",
        "description": "Gets the PayCode specified.\r\nUse the other GET endpoint that supports non-alphanumeric characters for a pay code",
        "operationId": "GetPayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Pay Code belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "description": "The code of the Pay Code you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCode"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "PayCode"
        ],
        "summary": "Update PayCode (deprecated)",
        "description": "Updates the details of an existing PayCode.\r\nUse the other Update endpoint that supports non-alphanumeric characters for a pay code",
        "operationId": "UpdatePayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCode"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "PayCode"
        ],
        "summary": "Delete PayCode (deprecated)",
        "description": "Deletes the specified PayCode.\r\nUse the other Delete endpoint that supports non-alphanumeric characters for a pay code",
        "operationId": "DeletePayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/paycodes/paycode": {
      "get": {
        "tags": [
          "PayCode"
        ],
        "summary": "Get PayCode",
        "description": "Gets the PayCode specified.",
        "operationId": "GetPayCodePayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Pay Code belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The code of the Pay Code you want to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCode"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "PayCode"
        ],
        "summary": "Update PayCode",
        "description": "Updates the details of an existing PayCode.",
        "operationId": "UpdatePayCodePayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCode"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCode"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "PayCode"
        ],
        "summary": "Delete PayCode",
        "description": "Deletes the specified PayCode.",
        "operationId": "DeletePayCodePayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/paycodes/nominalcodes": {
      "get": {
        "tags": [
          "PayCode"
        ],
        "summary": "Get Nominal Code Mappings",
        "description": "Returns the list of mappings of PayCodes to NominalCodes",
        "operationId": "NominalCodeMappingsPayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the mapping",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NominalCodeMapping"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PayCode"
        ],
        "summary": "Updates Nominal Code Mappings",
        "description": "Updates the list of mappings of PayCodes to NominalCodes",
        "operationId": "UpdateNominalCodeMappingsPayCode",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NominalCodeMapping"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NominalCodeMapping"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NominalCodeMapping"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NominalCodeMapping"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NominalCodeMapping"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/paycodesets": {
      "get": {
        "tags": [
          "PayCodeSet"
        ],
        "summary": "List PayCodeSets",
        "description": "Lists all PayCodeSets for an Employer.",
        "operationId": "IndexPayCodeSet",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list PayCodeSets",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PayCodeSet"
        ],
        "summary": "Create PayCodeSet",
        "description": "Creates a new PayCodeSet for the Employer.",
        "operationId": "CreatePayCodeSet",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCodeSet"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/paycodesets/{id}": {
      "get": {
        "tags": [
          "PayCodeSet"
        ],
        "summary": "Get PayCodeSet",
        "description": "Gets the PayCodeSet specified.",
        "operationId": "GetPayCodeSet",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Pay Code Set belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCodeSet"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PayCodeSet"
        ],
        "summary": "Update PayCodeSet",
        "description": "Updates the details of an existing PayCodeSet.",
        "operationId": "UpdatePayCodeSet",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayCodeSet"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayCodeSet"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "PayCodeSet"
        ],
        "summary": "Delete PayCodeSet",
        "description": "Deletes the specified PayCodeSet.",
        "operationId": "DeletePayCodeSet",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/payees": {
      "get": {
        "tags": [
          "Payee"
        ],
        "summary": "List Payees",
        "description": "Lists all Payees for an Employer.",
        "operationId": "IndexPayee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Payees",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Payee"
        ],
        "summary": "Create Payee",
        "description": "Creates a new Payee for the Employer.",
        "operationId": "CreatePayee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payee"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/payees/{id}": {
      "get": {
        "tags": [
          "Payee"
        ],
        "summary": "Get Payee",
        "description": "Gets the Payee specified.",
        "operationId": "GetPayee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Payee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payee"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Payee"
        ],
        "summary": "Update Payee",
        "description": "Updates a Payee for the Employer.",
        "operationId": "UpdatePayee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Payee"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payee"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Payee"
        ],
        "summary": "Delete Payee",
        "description": "Deletes the specified Payee.",
        "operationId": "DeletePayee",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "List PayRuns",
        "operationId": "GetPayRunsPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Starts the next PayRun",
        "description": "Starts the next PayRun and returns a 201 if successful",
        "operationId": "CreateNextPayRunPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success - the PayRun has been created.\r\nThe unique URL for this PayRun is returned in the Location header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PayRun"
        ],
        "summary": "Starts the next PayRun (deprecated)",
        "description": "This PUT will be removed in Jan 2022. You should instead use a POST to this URL",
        "operationId": "StartNextPayRunPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success - the PayRun has been created.\r\nThe unique URL for this PayRun is returned in the Location header."
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get a PayRun",
        "operationId": "GetPayRunPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "description": "Zero-based page number, used in conjunction with pageSize",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchTerm",
            "in": "query",
            "description": "The option to filter on a search term",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zeroPaid",
            "in": "query",
            "description": "The option to filter pay run entries by negative paid, zero paid and non-zero paid",
            "schema": {
              "$ref": "#/components/schemas/ZeroPaidFilter"
            }
          },
          {
            "name": "departmentCode",
            "in": "query",
            "description": "The option to filter on department code",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startersLeavers",
            "in": "query",
            "description": "The option to filter on whether the employee is a starter or leaver",
            "schema": {
              "$ref": "#/components/schemas/StartersLeaversFilter"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The option to sort by a certain field. Default is Payroll Code",
            "schema": {
              "$ref": "#/components/schemas/PayRunEntrySortBy"
            }
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Whether to sort in ascending or descending order",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "rolledBackOnly",
            "in": "query",
            "description": "If set to true, returns rolled back pay run entries. If false, returns all entries.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "If supplementary pay runs have been created this can be used to retrieve the specific supplementary pay run version",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "combinePayRuns",
            "in": "query",
            "description": "If supplementary pay runs have been created this can be used to retrieve the combined latest version of the pay run with all latest version pay run entries",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "PayRun"
        ],
        "summary": "Delete a PayRun",
        "operationId": "DeletePayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PayRun"
        ],
        "summary": "Update PayRun",
        "description": "Updates a PayRun to the state provided along with the reason (optional) for the change.",
        "operationId": "UpdatePayRunPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "sendPayslipEmails",
            "in": "query",
            "description": "Only relevant if setting the State to Finalised. Set to true if you want to have payslips emailed to employees.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "payslipReleaseType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayslipReleaseType"
            }
          },
          {
            "name": "payslipScheduledDateTime",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "If supplementary pay runs have been created this can be used to update the specific supplementary pay run version",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fpsLateReason",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/FpsLateReason"
            }
          }
        ],
        "requestBody": {
          "description": "Specify the PayRun state you want to change to and the reason for the change.\r\nOnly Open and Finalised states are available at the moment.\r\nOther states are used with Bureau functionality which isn't currently generally available.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success - the PayRun has been updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/warnings": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get PayRun Warnings",
        "description": "Returns a list of Item detailing any Warnings for PayRunEntries on the specified PayRun",
        "operationId": "GetPayRunWarningsPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/events": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get PayPeriodEvents",
        "operationId": "GetPayRunEventsPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaySchedulePeriodEvent"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/ytd": {
      "put": {
        "tags": [
          "PayRun"
        ],
        "summary": "Update YTD",
        "description": "Upload a CSV to override the YTD values on a Pay Run.\r\nThe CSV should have the same headings as the YTD report",
        "operationId": "YtdPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EmployeeYtdValues"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/leave": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "List Leave related to a PayRun",
        "description": "Returns a List of Items representing any Leave within the PayRun date range for Employees that are included in the given PayRun.\r\nNote that if Leave was added after the PayRun was closed, but the Leave is within the PayRun period then it'll be returned here even though it wouldn't have been processed with the PayRun.",
        "operationId": "LeavePayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/aeo": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "List AttachmentOrders related to a PayRun",
        "description": "Returns a List of Items representing any AttachmentOrders within the PayRun date range for Employees that are included in the given PayRun.",
        "operationId": "AeoPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/changes": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "List PayRun Changes",
        "description": "Returns a of changes made to a payrun since it was created.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "ChangesPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunChanges"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/{id}/changes": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "List PayRun Changes for PayRunEntry",
        "description": "Returns a list of AuditEntry reflecting changes made to a PayRunEntry and related employee record for a given PayRun\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "ChangesForPayRunEntryPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "significantChangesOnly",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChangeSummary"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/journal": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get Journal for PayRun",
        "description": "Returns values that can be used to create accounting entries for this PayRun.",
        "operationId": "GetPayRunJournalPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "deptBreakdown",
            "in": "query",
            "description": "Set to true and the journal will be split between any relevant Departments",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeApprenticeLevy",
            "in": "query",
            "description": "Set to true to include Apprenticeship Levy amounts in the journal if the employer is liable",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "allSchedules",
            "in": "query",
            "description": "Set to true to display Apprenticeship Levy amount for all schedules; otherwise, only for the selected schedule in the journal",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunJournal"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/finalise": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Finalise a PayRun (deprecated)",
        "description": "This endpoint is now deprecated and will be removed in Jan 2022.\r\nYou should instead use the Update method and set the State to Finalised.\r\n            \r\nReturns True if the resulting FPS has been automatically submitted due to the Employers RTISubmissionSettings, otherwise returns false.\r\nYou can suppress the emailing of payslips to employees by adding a key named dontEmailEmployeePayslips with a value of true to the body. See the related guides for more information.",
        "operationId": "FinalisePayRunPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "text/json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/reopen": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Re-open a PayRun (deprecated)",
        "description": "This endpoint is now deprecated and will be removed in Jan 2022.\r\nYou should instead use the Update method and set the State to Open.\r\n            \r\nRe-opens a PayRun so that it can be edited.\r\nOnly the most recent PayRun can be re-opened, and only if the Employer is still in the same TaxYear as the PayRun and there are no open PayRuns.",
        "operationId": "ReOpenPayRunPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/email": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "(Re)send Payslip Emails",
        "description": "Payslips are usually emailed automatically when a PayRun is finalised. But if you suppressed them or need to re-send them then you can do so with this API call.\r\nProviding a pay run entry id will send a single email, otherwise all emails will be sent.",
        "operationId": "SendPayslipEmailsPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The ID of the employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The pay period of the pay run.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "description": "The period number of the pay run.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The tax year of the pay run.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "description": "The ordinal number of the pay run.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "The UniqueId of the pay run entry (optional).",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "If supplementary pay runs have been created this can be used to specify the supplementary pay run version.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/p45/email": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "(Re)send P45 Emails",
        "operationId": "EmailMultipleP45sPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/paycodes": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get PayCodes for a PayRun",
        "operationId": "GetPayRunPayCodesPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayCode"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/supplementary": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Creates a supplementary PayRun",
        "description": "Creates a supplementary PayRun and returns a 201 if successful",
        "operationId": "CreateSupplementaryPayRunPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SupplementaryPayRunDetails"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupplementaryPayRunDetails"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SupplementaryPayRunDetails"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SupplementaryPayRunDetails"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success - the supplementary PayRun has been created.\r\nThe unique URL for this supplementary PayRun is returned in the Location header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/{id}": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get a PayRunEntry",
        "operationId": "GetPayRunEntryPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "differenceOnly",
            "in": "query",
            "description": "If the PayRunEntry is part of a supplementary PayRun and this is set to true, the PayRunEntry will contain the differences between the current pay run version of the PayRunEntry and its previous version",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Update a PayRunEntry",
        "operationId": "UpdatePayRunEntryPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "forceSyncEmployeePayOptions",
            "in": "query",
            "description": "If set to true then changes made to employee pay options will be reflected into the pay run entry. Defaults to false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunEntry"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunEntry"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunEntry"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunEntry"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/{id}/umbrella": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "PayRunEntry Umbrella Payment",
        "description": "Automatically sets the values on the PayRunEntry based on an UmbrellaPayment.\r\nUsing this method overwrites any existing values for the PayRunEntry.",
        "operationId": "PayRunEntryUmbrellaPaymentPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UmbrellaPayment"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UmbrellaPayment"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UmbrellaPayment"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UmbrellaPayment"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{payPeriod}/importpay": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Import Pay",
        "description": "Takes a list PayOptionsImport and updates the currently open payrun to use the amounts given.\r\nYou must have an open payrun for the PayPeriod specified and all payroll codes submitted must match an employee on the payrun.\r\nAny lines imported for a PayRunEntry will replace existing lines for that PayRunEntry.",
        "operationId": "ImportPayPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "linesOnly",
            "in": "query",
            "description": "If set to true then only lines will be imported. Changes to regular pay will be ignored. Defaults to false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "append",
            "in": "query",
            "description": "If set to true then the lines submitted will be appended to existing lines rather than replace them. Defaults to false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "updateExisting",
            "in": "query",
            "description": "If set to true then any submitted lines that match the pay code of one (and only one) existing line will be used to update the value of that lines. Any unmatched lines will be appended to existing lines.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "validateOnly",
            "in": "query",
            "description": "If set to true, the import will only be validated for data correctness. If false, the import is validated and then imported.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PayOptionsImport"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{payPeriod}/importumbrellapay": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Import Umbrella Pay",
        "description": "Takes a list UmbrellaPayment and updates the currently open payrun to use the amounts given.\r\nYou must have an open payrun for the PayPeriod specified and all payroll codes submitted must match an employee on the payrun.\r\nYou should have also set the UmbrellaSettings for the Employer",
        "operationId": "ImportUmbrellaPayPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UmbrellaPayment"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UmbrellaPayment"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UmbrellaPayment"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UmbrellaPayment"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{payPeriod}/importtimeandattendance": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Import Time And Attendance",
        "description": "If the employer is connected to an ExternalDataProvider that provides Time and Attendance data then this API\r\ncall will update the currently open payrun for the PayPeriod specified with data from the specified provider.\r\nReturns a list of PayOptionsImport to show what's been imported.",
        "operationId": "ImportTimeAndAttendancePayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "providerId",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayOptionsImport"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/paymentdate": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Set PaymentDate",
        "description": "Sets the PaymentDate for a PayRun.\r\nIf the date given is outside of the TaxPeriod that the payrun is for then only the payment date for the individual\r\nPayRunEntries is updated, the PayRun will retain it's current PaymentDate",
        "operationId": "UpdatePaymentDatePayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "string",
                "format": "date-time"
              }
            },
            "application/json": {
              "schema": {
                "type": "string",
                "format": "date-time"
              }
            },
            "text/json": {
              "schema": {
                "type": "string",
                "format": "date-time"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/zeroise": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Zeroise PayRunEntries",
        "description": "Zeroises the payrun entries specified in the ids property",
        "operationId": "ZeroisePayRunEntriesPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/removepayrunentries": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Remove PayRunEntries (deprecated)",
        "description": "Removes the payrun entries specified in the ids property",
        "operationId": "RemovePayRunEntriesPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/addpayrunentries": {
      "post": {
        "tags": [
          "PayRun"
        ],
        "summary": "Add PayRunEntries (deprecated)",
        "description": "Adds the payrun entries specified in the ids property",
        "operationId": "AddPayRunEntriesPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/employees/{employeeId}/Last": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Gets the last closed pay run entry for an employee.",
        "operationId": "LastPayRunEntryForEmployeePayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to get last pay run entry for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "isClosed",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/employees/{employeeId}/averageholidaypayrate": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Calculate Average Holiday Pay Rate",
        "description": "Calculates the average holiday pay rate for an employee based on their holiday scheme configuration",
        "operationId": "CalculateAverageHolidayPayPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The date we used to calculate average holiday pay from",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "isDaily",
            "in": "query",
            "description": "If set to true, will calculate based on days otherwise will calculate based on hours",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/stateHistory": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "List PayRunStateHistory",
        "description": "Returns the state history of a pay run.",
        "operationId": "GetPayRunStateHistoryPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The Pay Period (i.e, Monthly, Weekly) for which you want to get the Pay Run history",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "description": "The Period (i.e, Tax Month, Tax Week) for which you want to get the Pay Run history",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The Tax Year for which you want to get the Pay Run history",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "description": "Indicates whether it uses first, second, third (etc.) PaySchedule for the PayPeriod",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayRunStateHistoryResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayRunStateHistoryResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayRunStateHistoryResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/employees/{employeeId}/pension/{pensionUniqueId}/pensionytd": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Gets last PayRunEntry for a Pension",
        "operationId": "LastPayRunEntryWithPensionYtdValuesForEmployeePayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to get pay run entry for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pensionUniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/open": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get list of open payruns",
        "operationId": "GetOpenPayrunsPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayRun"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/navigation/{payRunEntryId}": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Get PayRunEntryNavigation for a specific PayRunEntry",
        "description": "Gets PayRunEntryNavigation details for a specific payrunentry within a pay run context, \r\nproviding previous/next payrunentry navigation based on the pay run's employee list filtered by the specified criteria.",
        "operationId": "GetPayRunEntryNavigationPayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The ID of the employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payRunEntryId",
            "in": "path",
            "description": "The unique identifier of the payrunentry for which to build navigation context.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "searchTerm",
            "in": "query",
            "description": "An optional search term to filter employees.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zeroPaid",
            "in": "query",
            "description": "The option to filter pay run entries by negative paid, zero paid, and non-zero paid.",
            "schema": {
              "$ref": "#/components/schemas/ZeroPaidFilter"
            }
          },
          {
            "name": "departmentCode",
            "in": "query",
            "description": "The option to filter on department code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startersLeavers",
            "in": "query",
            "description": "The option to filter on whether the employee is a starter or leaver.",
            "schema": {
              "$ref": "#/components/schemas/StartersLeaversFilter"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The option to sort by a certain field. Default is Payroll Code.",
            "schema": {
              "$ref": "#/components/schemas/PayRunEntrySortBy"
            }
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Whether to sort in ascending or descending order.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "rolledBackOnly",
            "in": "query",
            "description": "If set to true, returns rolled back pay run entries. If false, returns all entries.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntryNavigation"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/check-if-fps-late-reason-applicable": {
      "get": {
        "tags": [
          "PayRun"
        ],
        "summary": "Check if the FPS late reason is applicable",
        "description": "Determines if the FPS late reason is applicable for the given pay period based on employer settings and the provided tax year.\r\nThe check is only performed if AutoSubmitFPS is enabled for the employer.",
        "operationId": "CheckIfFPSLateReasonApplicablePayRun",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The ID of the employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "description": "The pay period (e.g., Monthly, Weekly) for which you want to check if the FPS late reason is applicable.",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "query",
            "description": "The period number (e.g., Tax Month, Tax Week) for which you want to check if the FPS late reason is applicable.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "description": "The tax year for which you want to check if the FPS late reason is applicable.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "description": "Indicates whether it is the first, second, third, etc., pay schedule for the given pay period.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun-async/{taxYear}/{payPeriod}/{periodNumber}": {
      "delete": {
        "tags": [
          "PayRunAsync"
        ],
        "summary": "Registers a request to delete a PayRun (beta)",
        "description": "Registers a request to delete a PayRun and returns a 202 if successful.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "QueueDeletePayRunPayRunAsync",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "put": {
        "tags": [
          "PayRunAsync"
        ],
        "summary": "Registers a request to update the PayRun (beta)",
        "description": "Queues a request to update a PayRun to the state provided along with the reason (optional) for the change.",
        "operationId": "QueueUpdatePayRunPayRunAsync",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "sendPayslipEmails",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "payslipReleaseType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayslipReleaseType"
            }
          },
          {
            "name": "payslipScheduledDateTime",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fpsLateReason",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/FpsLateReason"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayRunStateChange"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRun"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/payrun-async/{taxYear}/{payPeriod}": {
      "post": {
        "tags": [
          "PayRunAsync"
        ],
        "summary": "Registers a request to start the next PayRun (beta)",
        "description": "Registers the request to start the next PayRun and returns a 202 if successful\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "QueueCreatePayRunPayRunAsync",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Success - the request to start a PayRun has been accepted.\r\nThe unique URL for this PayRun is returned in the Location header."
          },
          "400": {
            "description": "Bad Request"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/payrun-async/{payPeriod}/importpay": {
      "post": {
        "tags": [
          "PayRunAsync"
        ],
        "summary": "Import Pay (beta)",
        "description": "Takes a list PayOptionsImport and updates the currently open payrun to use the amounts given.\r\nYou must have an open payrun for the PayPeriod specified and all payroll codes submitted must match an employee on the payrun.\r\nAny lines imported for a PayRunEntry will replace existing lines for that PayRunEntry.",
        "operationId": "ImportPayPayRunAsync",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "LinesOnly",
            "in": "query",
            "description": "If set to true then only lines will be imported. Changes to regular pay will be ignored. Defaults to false.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Append",
            "in": "query",
            "description": "If set to true then the lines submitted will be appended to existing lines rather than replace them. Defaults to false.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "UpdateExisting",
            "in": "query",
            "description": "If set to true then any submitted lines that match the pay code of one (and only one) existing line will be used to update the value of that lines. Any unmatched lines will be appended to existing lines. Defaults to false.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "throwOnError",
            "in": "query",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayOptionsImportRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayOptionsImportRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayOptionsImportRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.PayOptionsImportRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/schedules/{taxYear}": {
      "get": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Get PaySchedules",
        "description": "Get all PaySchedules for the given TaxYear.",
        "operationId": "GetAllPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaySchedule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/schedules/all": {
      "get": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Get PaySchedules for Employer (for active tax years)",
        "description": "Get all PaySchedules for the given Employer.",
        "operationId": "GetAllForEmployerPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaySchedule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/schedules/{taxYear}/{payPeriod}": {
      "get": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Get PaySchedule (deprecated)",
        "description": "Get the PaySchedule for the PayPeriod and TaxYear specified (and an optional ordinal. 1 will be used if ordinal is not provided).",
        "operationId": "GetWithOptionalOrdinalPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaySchedule"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Create a PaySchedule (deprecated)",
        "description": "Create PaySchedule using a certain pay frequency and TaxYear specified (and an optional ordinal. 1 will be used if ordinal is not provided).",
        "operationId": "CreateWithOptionalOrdinalPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to update details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that the PaySchedule is for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Update PaySchedule (deprecated)",
        "description": "Update PaySchedule for the PayPeriod and TaxYear specified (and an optional ordinal. 1 will be used if ordinal is not provided).",
        "operationId": "SaveWithOptionalOrdinalPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to update details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that the PaySchedule is for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaySchedule"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Delete PaySchedule (deprecated)",
        "description": "Delete the PaySchedule for the PayPeriod and TaxYear specified (and an optional ordinal. 1 will be used if ordinal is not provided).",
        "operationId": "DeleteWithOptionalOrdinalPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/schedules/{taxYear}/{payPeriod}/{ordinal}": {
      "get": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Get PaySchedule",
        "description": "Get the PaySchedule for the PayPeriod and TaxYear specified.",
        "operationId": "GetPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "Specify if this is the first, second, third (etc) PaySchedule for this PayPeriod. Use 1 for the first, 2 for the second, etc.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaySchedule"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Create a PaySchedule",
        "description": "Create PaySchedule using a certain pay frequency.",
        "operationId": "CreatePaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to update details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that the PaySchedule is for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "Specify if this is the first, second, third (etc) PaySchedule for this PayPeriod. Use 1 for the first, 2 for the second, etc.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Update PaySchedule",
        "description": "Update PaySchedule for the PayPeriod.",
        "operationId": "SavePaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to update details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that the PaySchedule is for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "Specify if this is the first, second, third (etc) PaySchedule for this PayPeriod. Use 1 for the first, 2 for the second, etc.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedule"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaySchedule"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Delete PaySchedule",
        "description": "Delete the PaySchedule for the PayPeriod and TaxYear specified.",
        "operationId": "DeletePaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the PaySchedule",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that you want to retrieve details for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "Specify if this is the first, second, third (etc) PaySchedule for this PayPeriod. Use 1 for the first, 2 for the second, etc.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/schedules/{taxYear}/{payPeriod}/{ordinal}/periods": {
      "get": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Get PaySchedulePeriods",
        "description": "Get the PaySchedulePeriods for PaySchedule specified.",
        "operationId": "GetPeriodsPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the PaySchedule periods",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to retrieve details for",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that you want to retrieve details for",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "Optionally specify the second, third, fourth (etc) PaySchedule for this PayPeriod. Defaults to 1 (first)",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "periodNumber",
            "in": "query",
            "description": "Optionally specify a period number to get a result just for that period",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeEvents",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaySchedulePeriod"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/schedules/{taxYear}/{payPeriod}/{ordinal}/periods/{periodNumber}": {
      "put": {
        "tags": [
          "PaySchedule"
        ],
        "summary": "Update PaySchedulePeriod",
        "description": "Update the PaymentDate for a PaySchedulePeriod.",
        "operationId": "UpdatePaySchedulePeriodPaySchedule",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update the PaySchedulePeriod",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod (ie, Monthly) that you want to update details for",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The year that the PaySchedule is for",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "Specify the first, second, third (etc) PaySchedule for this PayPeriod.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "description": "Specify the number of the period that you want to update the PaymentDate for",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedulePeriod"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedulePeriod"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedulePeriod"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaySchedulePeriod"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaySchedulePeriod"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/payspines": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "List PaySpine",
        "description": "Lists all PaySpine for an Employer.",
        "operationId": "IndexPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list PaySpine",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or PaySpine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create PaySpine",
        "description": "Create a new PaySpine for the Employer.",
        "operationId": "CreatePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PaySpineResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{id}": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get PaySpine",
        "description": "Gets the PaySpine specified.",
        "operationId": "GetPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PaySpine belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PaySpine which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PaySpineResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or PaySpine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update PaySpine",
        "description": "Updates a PaySpine for the Employer.",
        "operationId": "UpdatePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineUpdateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineUpdateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineUpdateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PaySpineResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete PaySpine",
        "description": "Deletes the specified PaySpine.",
        "operationId": "DeletePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/import": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Import PaySpine from csv file",
        "description": "Import PaySpine from a CSV file.",
        "operationId": "ImportCsvPaySpinePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/spinalpoints": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "List SpinalPoints",
        "description": "List SpinalPoints for an Employer and Payspine.",
        "operationId": "GetSpinalPointListPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want Spinal Point List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Spinal Point for which you want Spinal Point List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.SpinalPointResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or Pay Spine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create SpinalPoint",
        "description": "Create SpinalPoint for an Employer and Payspine.",
        "operationId": "CreateSpinalPointPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay spine for which you want to create Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.SpinalPointResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete All SpinalPoints Associated with a PaySpine",
        "description": "Delete all SpinalPoints associated with the specified PaySpine.",
        "operationId": "DeleteAllSpinalPointsPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to delete Spinal Point List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to delete Spinal Point List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/spinalpoints/{spinalPointId}": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get SpinalPoint",
        "description": "Get SpinalPoint for an Employer and Payspine.",
        "operationId": "GetSpinalPointPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "spinalPointId",
            "in": "path",
            "description": "The Id of the Spinal Point for which you want Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.SpinalPointResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Pay Spine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update SpinalPoint",
        "description": "Update SpinalPoint for the Employer and PaySpine.",
        "operationId": "UpdateSpinalPointPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "spinalPointId",
            "in": "path",
            "description": "The Id of the Spinal Point for which you want to update Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpinalPointRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.SpinalPointResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete SpinalPoint",
        "description": "Delete the specified SpinalPoint.",
        "operationId": "DeleteSpinalPointPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update Spinal Point List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update Spinal Point List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "spinalPointId",
            "in": "path",
            "description": "The Id of the Spinal Point for which you want to update Spinal Point List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/spinalpoints/bulk": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create Multiple SpinalPoints",
        "description": "Create multiple SpinalPoints for the specified PaySpine.",
        "operationId": "CreateMultiplePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create multiple Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to create multiple Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.SpinalPointResponse"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update Multiple SpinalPoints",
        "description": "Update an array of SpinalPoints for the specified PaySpine.",
        "operationId": "UpdateMultiplePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update multiple Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update multiple Spinal Point",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointUpdateRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointUpdateRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointUpdateRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpinalPointUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.SpinalPointResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/spinalpoints/import": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Import SpinalPoints from csv file",
        "description": "Import SpinalPoints from a CSV file.",
        "operationId": "ImportCsvPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create SpineAllowance",
        "description": "Create Allowance for a Pay Spine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "CreateSpineAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay spine for which you want to create Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "List SpineAllowances",
        "description": "List Spine Allowances for a Pay Spine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "GetSpineAllowanceListPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want list of Spine Allowances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want list of Spine Allowances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.SpineAllowanceResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or Pay Spine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete All SpineAllowances Associated with a PaySpine",
        "description": "Delete all Allowances associated with the specified Pay Spine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "DeleteAllSpineAllowancesPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to delete SpineAllowances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to delete SpineAllowances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances/{allowanceid}": {
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update SpineAllowance",
        "description": "Update Allowance for a Pay Spine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "UpdateSpineAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceid",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to update Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get SpineAllowance",
        "description": "Get Allowance for a Pay Spine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "GetSpineAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to get Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceid",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to get Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Pay Spine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete SpineAllowance",
        "description": "Delete Allowance for a Pay Spine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "DeleteSpineAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to delete Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to delete Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceid",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to delete Spine Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances/create/bulk": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create Multiple SpineAllowances",
        "description": "Creates multiple Spine Allowance for the specified PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "CreateMultipleSpineAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create multiple SpineAllowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to create multiple SpineAllowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.SpineAllowanceResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances/update/bulk": {
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update Multiple SpineAllowances",
        "description": "Updates an array of Spine Allowance for the specified PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "UpdateMultipleSpineAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update multiple SpineAllowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update multiple SpineAllowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceUpdateRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceUpdateRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceUpdateRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.SpineAllowanceUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.SpineAllowanceResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/londonallowances": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "List LondonAllowances",
        "description": "List LondonAllowances for an Employer and Payspine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "GetLondonAllowanceListPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want list of London Allowances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want list of London Allowances",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LondonAllowance"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or Pay Spine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create LondonAllowance",
        "description": "Create LondonAllowance for an Employer and Payspine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "CreateLondonAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay spine for which you want to create London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.LondonAllowanceResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/londonallowances/{londonAllowanceId}": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get LondonAllowance",
        "description": "Get LondonAllowance for an Employer and Payspine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "GetLondonAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to get London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "londonAllowanceId",
            "in": "path",
            "description": "The Id of the London Allowance for which you want to get London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.LondonAllowanceResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Pay Spine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update LondonAllowance",
        "description": "Update LondonAllowance for the Employer and PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "UpdateLondonAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "londonAllowanceId",
            "in": "path",
            "description": "The Id of the London Allowance for which you want to update London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.LondonAllowanceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.LondonAllowanceResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete LondonAllowance",
        "description": "Delete the specified London Allowance. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "DeleteLondonAllowancePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to delete London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to delete London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "londonAllowanceId",
            "in": "path",
            "description": "The Id of the Spinal Point for which you want to delete London Allowance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/paygrades": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "List PaySpine Grade",
        "description": "Lists PaySpine Grade for an Employer and PaySpine Grade.",
        "operationId": "GetPaySpineGradeListPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want PaySpine Grade List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the PaySpine Grade for which you want PaySpine Grade List",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PaySpineGradeResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or PaySpine Grade Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create PaySpine Grade",
        "description": "create PaySpine Grade for an Employer and Payspine.",
        "operationId": "CreatePaySpineGradePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay spine for which you want to create PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PaySpineGradeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/paygrades/{payGradeId}": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get PaySpine Grade",
        "description": "PaySpine Grade for an Employer and Payspine.",
        "operationId": "GetPaySpineGradePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payGradeId",
            "in": "path",
            "description": "The Id of the PaySpine Grade for which you want PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PaySpineGradeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or PaySpine Grade Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update PaySpine Grade",
        "description": "Updates a PaySpine Grade for the Employer and PaySpine.",
        "operationId": "UpdatePayGradePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payGradeId",
            "in": "path",
            "description": "The Id of the PaySpine Grade for which you want to update PaySpine Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PaySpineGradeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PaySpineGradeResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete PaySpine Grade",
        "description": "Deletes the specified PaySpine Grade.",
        "operationId": "DeletePaySpineGradePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payGradeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances/{allowanceId}/allowancegrades/{allowanceGradeId}": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get AllowanceGrade",
        "description": "Get AllowanceGrade for a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "GetAllowanceGradePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceGradeId",
            "in": "path",
            "description": "The Id of the Allowance Grade for which you want Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or PaySpine Grade Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update AllowanceGrade",
        "description": "Update AllowanceGrade for a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "UpdateAllowanceGradePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to update Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceGradeId",
            "in": "path",
            "description": "The Id of the Allowance Grade for which you want to update Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete AllowanceGrade",
        "description": "Delete AllowanceGrade for a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "DeleteAllowanceGradePaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to delete Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to delete Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to delete Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceGradeId",
            "in": "path",
            "description": "The Id of the Allowance Grade for which you want to delete Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances/{allowanceId}/allowancegrades": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create AllowanceGrade",
        "description": "Create AllowanceGrade for a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "CreateAllowanceGradesPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay spine for which you want to create Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to create Allowance Grade",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "List AllowanceGrades",
        "description": "List AllowanceGrades for a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "GetAllowanceGradesPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want list of Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want list of Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want list of Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AllowanceGradesResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Employer or Pay Spine Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Delete All AllowanceGrades Associated with a PaySpine",
        "description": "Delete all AllowanceGrades associated with a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "DeleteAllAllowanceGradesPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to delete Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to delete Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to delete Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances/{allowanceId}/allowancegrades/create/bulk": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Create Multiple AllowanceGrades",
        "description": "Create multiple AllowanceGrades for a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "CreateMultipleAllowanceGradesPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to create multiple Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to create multiple Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to create multiple Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AllowanceGradesResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{paySpineId}/allowances/{allowanceId}/allowancegrades/update/bulk": {
      "put": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Update Multiple AllowanceGrades",
        "description": "Update multiple AllowanceGrades for a PaySpine. [This endpoint is in beta for future development work and should not be used]",
        "operationId": "UpdateMultipleAllowanceGradesPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to update multiple Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "path",
            "description": "The Id of the Pay Spine for which you want to update multiple Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "allowanceId",
            "in": "path",
            "description": "The Id of the Spine Allowance for which you want to update multiple Allowance Grades",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesUpdateRequest"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesUpdateRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesUpdateRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contract.AllowanceGradesUpdateRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.AllowanceGradesResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/paygrades/import": {
      "post": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Import SpineGrades from csv file",
        "description": "Import Spine Grades from a CSV file.",
        "operationId": "ImportPayspineGradeCsvPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{id}/annualsalarybypayspines": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get Annual Value from pay spines formula",
        "operationId": "GetAnnualValueFromSalaryFormulaPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "description": "The Employee id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The selected PaySpine Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineGradeId",
            "in": "query",
            "description": "The selected PaySpineGrade Id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "spinalPointId",
            "in": "query",
            "description": "The selected SpinalPoint Id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "londonAllowanceType",
            "in": "query",
            "description": "The London Allowance Id of PayLine.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "effectiveFrom",
            "in": "query",
            "description": "The PayLine effective from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "workingPatternId",
            "in": "query",
            "description": "The selected WorkingPattern Id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleId",
            "in": "query",
            "description": "The Role Id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaylineCalculationData"
                }
              }
            }
          },
          "404": {
            "description": "Employee or PaySpine Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/payspines/{id}/employees/{employeeId}/getspinalpointwithannualsalary/{spinalPointId}/{effectiveFrom}": {
      "get": {
        "tags": [
          "PaySpine"
        ],
        "summary": "Get Spinal Point With Final Annual Salary",
        "operationId": "GetSpinalPointWithAnnualSalaryPaySpine",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Employee id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The selected PaySpine Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "spinalPointId",
            "in": "path",
            "description": "The selected SpinalPoint Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "effectiveFrom",
            "in": "path",
            "description": "The PayLine effective from.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "paySpineGradeId",
            "in": "query",
            "description": "The selected PaySpineGrade Id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "londonAllowanceType",
            "in": "query",
            "description": "The London Allowance Id of PayLine.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.SpinalPointResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employee or PaySpine Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pension/list": {
      "get": {
        "tags": [
          "Pension"
        ],
        "summary": "List Pensions",
        "description": "Returns a list of Item representing any Pensions for the given employee",
        "operationId": "ListPension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to list Pensions",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pension/{id}": {
      "get": {
        "tags": [
          "Pension"
        ],
        "summary": "Get Pension",
        "description": "Returns a Pension for an Employee",
        "operationId": "GetPension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pension"
        ],
        "summary": "Update Pension",
        "description": "Updates the Pension for an Employee.",
        "operationId": "UpdatePension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to update the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Pension"
        ],
        "summary": "Remove Pension",
        "description": "Removes a  Pension for an Employee.",
        "operationId": "RemovePension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to remove the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pension": {
      "post": {
        "tags": [
          "Pension"
        ],
        "summary": "Create Pension",
        "description": "Creates a Pension for an Employee.",
        "operationId": "CreatePension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to create a Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "get": {
        "tags": [
          "Pension"
        ],
        "summary": "Get Pension (deprecated)",
        "description": "This endpoint is now deprecated. You should use the alternative end points that require an ID to be specified.\r\nUntil it is removed, this endpoint will work only for employees with a single pension\r\n\r\nReturns the Pension, if any, for an Employee",
        "operationId": "Get_DeprecatedPension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to retrieve the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pension"
        ],
        "summary": "Update Pension (deprecated)",
        "description": "This endpoint is now deprecated. You should use the alternative end points that require an ID to be specified.\r\nUntil it is removed, this endpoint will work only for employees with a single pension\r\n\r\nUpdates the Pension for an Employee.",
        "operationId": "Update_DeprecatedPension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to update the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Pension"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pension"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Pension"
        ],
        "summary": "Remove Pension (deprecated)",
        "description": "This endpoint is now deprecated. You should use the alternative end points that require an ID to be specified.\r\nUntil it is removed, this endpoint will work only for employees with a single pension\r\n\r\nRemoves the Pension for an Employee.\r\nFor AE Pensions this will remove the employee from the pension and delete any associated AeAssessments",
        "operationId": "Remove_DeprecatedPension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee for which you want to remove the Pension",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pension/{pensionUniqueId}/{taxYear}/pensionytd": {
      "get": {
        "tags": [
          "Pension"
        ],
        "summary": "Get last PayRunEntry for a Pension (deprecated)",
        "description": "This endpoint is now deprecated. You should use the alternative GET end point from PayRun\r\n    \r\nGets a last PayRunEntry for a Pension.",
        "operationId": "LastPayRunEntryWithPensionYtdValuesForEmployeePension",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Employee belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want to get pay run entry for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pensionUniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunEntry"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pensionrefund": {
      "post": {
        "tags": [
          "PensionRefund"
        ],
        "summary": "Create Pension Refund",
        "description": "Creates a Pension Refund for the Employee",
        "operationId": "CreatePensionRefund",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "get": {
        "tags": [
          "PensionRefund"
        ],
        "summary": "List Pension Refunds",
        "description": "Lists all Pension Refunds for the Employee",
        "operationId": "IndexPensionRefund",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pensionrefund/{id}": {
      "get": {
        "tags": [
          "PensionRefund"
        ],
        "summary": "Get Pension Refund",
        "description": "Gets the Pension Refund specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "GetPensionRefund",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Pension Refund you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionRefund"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "PensionRefund"
        ],
        "summary": "Update Pension Refund",
        "operationId": "UpdatePensionRefund",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Pension Refund you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionRefund"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionRefund"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      },
      "delete": {
        "tags": [
          "PensionRefund"
        ],
        "summary": "Delete Pension Refund",
        "description": "Deletes the Pension Refund specified by the Id for the Employee specified by the EmployeeId",
        "operationId": "DeletePensionRefund",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Pension Refund you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pensionrefund/autocalculated": {
      "post": {
        "tags": [
          "PensionRefund"
        ],
        "summary": "Issue Pension Refund (deprecated)",
        "description": "Creates a pension refund for full contribution amount for the current tax year for the current pensionScheme",
        "operationId": "IssueRefundForCurrentPensionSchemePensionRefund",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionRefund"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/employees/{employeeId}/pensionrefund/{pensionId}/autocalculated": {
      "post": {
        "tags": [
          "PensionRefund"
        ],
        "summary": "Issue Pension Refund",
        "description": "Creates a pension refund for full contribution amount for the current tax year for the current pension",
        "operationId": "IssueRefundForPensionPensionRefund",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pensionId",
            "in": "path",
            "description": "The Id of the pension for which you want to issue a refund.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionRefund"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/pensionschemes": {
      "get": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "List PensionSchemes",
        "operationId": "IndexPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list PensionSchemes",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Create a PensionScheme",
        "operationId": "CreatePensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionScheme"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/pensionschemes/{id}": {
      "get": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Get a PensionScheme",
        "operationId": "GetPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PensionScheme belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PensionScheme you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionScheme"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Update a PensionScheme",
        "operationId": "UpdatePensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PensionScheme"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionScheme"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Delete a PensionScheme",
        "operationId": "DeletePensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/pensionschemes/{id}/employees": {
      "get": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Get Employees",
        "description": "Returns the employees that are enrolled in the specified scheme",
        "operationId": "EmployeesPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PensionScheme belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PensionScheme you want to retrieve Employees for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/pensionschemes/{id}/contributions/{taxYear}": {
      "get": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "List Contributions",
        "description": "Returns a list of Items that tell you which PayRuns contain contributions to this scheme and the Url to the relevant report.\r\nIF the scheme is connected to an ExternalDataProvider then the status of the submission will also be included.",
        "operationId": "ListContributionsPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PensionScheme belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PensionScheme.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear to query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/pensionschemes/{id}/contributions/{taxYear}/{payPeriod}/{periodNumber}": {
      "get": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Contributions for Payrun",
        "description": "Returns contributions for a specific scheme and payrun",
        "operationId": "ContributionsForPayrunPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PensionScheme belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PensionScheme.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear to query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionContributionsSubmission"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/pensionschemes/{id}/contributions/{taxYear}/{submissionId}": {
      "post": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Re-submit Contributions",
        "description": "Re-submits previously failed Contributions to a Pension Scheme.",
        "operationId": "ResubmitContributionsPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PensionScheme belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PensionScheme.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear of the submission",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "submissionId",
            "in": "path",
            "description": "The Id of the Submission to re-submit.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "get": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Contributions Data",
        "description": "Returns an ExternalProviderConversation showing data sent to and received from the ExternalDataProvider for the pension contribution submission.",
        "operationId": "ContributionsPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PensionScheme belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PensionScheme.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear of the submission",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "submissionId",
            "in": "path",
            "description": "The Id of the Submission.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalProviderConversation"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/pensionschemes/{id}/contributions/{taxYear}/{submissionId}/markassent": {
      "post": {
        "tags": [
          "PensionScheme"
        ],
        "summary": "Mark as Sent",
        "description": "Marks the Pension Contributions as sent",
        "operationId": "MarkAsSentPensionScheme",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the PensionScheme belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PensionScheme.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear of the submission",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "submissionId",
            "in": "path",
            "description": "The Id of the Submission.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalProviderConversation"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/processingnotes": {
      "post": {
        "tags": [
          "ProcessingNote"
        ],
        "summary": "Create ProcessingNote",
        "description": "Creates a Processing Note for the PayRun.\r\nYou must have Bureau Features enabled and the payrun must be editable.",
        "operationId": "CreateProcessingNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNote"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNote"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNote"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNote"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success - the ProcessingNote has has been created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingNote"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "get": {
        "tags": [
          "ProcessingNote"
        ],
        "summary": "List ProcessingNotes for a PayRun",
        "operationId": "ListProcessingNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "payrunEntryId",
            "in": "query",
            "description": "Optionally filter ProcessingNotes to just those for the specified PayRunEntry",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/processingnotes/{id}": {
      "get": {
        "tags": [
          "ProcessingNote"
        ],
        "summary": "Get a ProcessingNote",
        "operationId": "GetProcessingNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingNote"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{taxYear}/{payPeriod}/{periodNumber}/processingnotes/{id}/status": {
      "put": {
        "tags": [
          "ProcessingNote"
        ],
        "summary": "Set a ProcessingNote status",
        "description": "Set a ProcessingNote status.\r\nYou must have Bureau Features enabled and the payrun must be editable.",
        "operationId": "SetStatusProcessingNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNoteStatus"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNoteStatus"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNoteStatus"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingNoteStatus"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success - the ProcessingNote status has been updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingNote"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{id}/documents": {
      "post": {
        "tags": [
          "ProcessingNote"
        ],
        "summary": "Add Document",
        "description": "Adds document to the ProcessingNote",
        "operationId": "AddDocumentProcessingNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the ProcessingNote you want to attach documents to",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/payrun/{id}/documents/{documentId}": {
      "delete": {
        "tags": [
          "ProcessingNote"
        ],
        "summary": "Delete ProcessingNote Document",
        "description": "Deletes the document specified by the documentId for the ProcessingNote specified by the Id",
        "operationId": "DeleteDocumentProcessingNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "tags": [
          "ProcessingNote"
        ],
        "summary": "Get ProcessingNote Document",
        "description": "Gets the document specified by the documentId for the ProcessingNote specified by the Id",
        "operationId": "GetDocumentProcessingNote",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The Id of the Document you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/reportbuilder/schedules": {
      "post": {
        "tags": [
          "ReportBuilder"
        ],
        "summary": "List PaySchedules",
        "description": "Get PaySchedules based on the provided EmployerIds and TaxYears for running custom reports.",
        "operationId": "GetPaySchedulesByEmployersAndTaxYearsReportBuilder",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayScheduleResponseItem"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reportbuilder/schedulesbydate": {
      "post": {
        "tags": [
          "ReportBuilder"
        ],
        "summary": "List PaySchedules By Date Range",
        "description": "Get PaySchedules based on the provided EmployerIds and pay dates for running custom reports.",
        "operationId": "GetPaySchedulesByEmployerAndPayDatesReportBuilder",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleByDateRangeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleByDateRangeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleByDateRangeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayScheduleByDateRangeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayScheduleResponseItem"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/packs": {
      "get": {
        "tags": [
          "ReportPack"
        ],
        "summary": "List ReportPacks",
        "description": "Lists all ReportPacks for an Employer.",
        "operationId": "IndexReportPack",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list ReportPacks",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ReportPack"
        ],
        "summary": "Create ReportPack",
        "description": "Creates a new ReportPack for the Employer.",
        "operationId": "CreateReportPack",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportPack"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/reports/packs/{id}": {
      "get": {
        "tags": [
          "ReportPack"
        ],
        "summary": "Get ReportPack",
        "description": "Gets the ReportPack specified.",
        "operationId": "GetReportPack",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the ReportPack belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportPack"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ReportPack"
        ],
        "summary": "Update ReportPack",
        "description": "Updates a ReportPack for the Employer.",
        "operationId": "UpdateReportPack",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReportPack"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportPack"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "ReportPack"
        ],
        "summary": "Delete ReportPack",
        "description": "Deletes the specified ReportPack.",
        "operationId": "DeleteReportPack",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/apprenticeshiplevy": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Apprenticeship Levy Details",
        "operationId": "ApprenticeshipLevyDetailsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear that the Apprenticeship Levy is for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/p60/{employeeId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P60 For Employee",
        "description": "Gets a P60 in PDF format for the TaxYear and Employee specified. A URL is returned which points to the PDF file.",
        "operationId": "P60Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the P60 is for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/p60": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "All P60s For TaxYear",
        "description": "Returns all P60s in a single PDF file for the TaxYear and Employer specified\r\nIf you set the accept header to \"text/html\" then unlike other reports the html is NOT in the ```Content``` field.\r\nAs there are multiple HTML documents they are encoded as a JSON array of strings in the ```Model``` field.",
        "operationId": "P60MultipleReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear you want P60s for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "excludeEmployeesWithP60EmailSent",
            "in": "query",
            "description": "Exclude Employees with Already Sent P60 Emails.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/p60/email/{employeeId}": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Email P60 to an Employee",
        "description": "Email a P60 to an Employee",
        "operationId": "EmailP60Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want the email a P60 to.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "description": "The TaxYear you want P60s for.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/reports/p60/email": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Email P60 to all Employees",
        "description": "Email P60 to all Employee",
        "operationId": "EmailP60MultipleReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "description": "The TaxYear you want P60s for.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "excludeEmployeesWithP60EmailSent",
            "in": "query",
            "description": "Exclude Employees with Already Sent P60 Emails.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/p11d/{employeeId}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P11D For Employee",
        "description": "Gets a P11D in PDF format for the TaxYear and Employee specified. A URL is returned which points to the PDF file.",
        "operationId": "P11DReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear the P60 is for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/p11d": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "All P11Ds For TaxYear",
        "description": "Returns all P11Ds in a single PDF file for the TaxYear and Employer specified\r\nIf you set the accept header to \"text/html\" then unlike other reports the html is NOT in the ```Content``` field.\r\nAs there are multiple HTML documents they are encoded as a JSON array of strings in the ```Model``` field.",
        "operationId": "P11DMultipleReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear you want P11Ds for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "excludeEmployeesWithP11dEmailSent",
            "in": "query",
            "description": "Exclude Employees with Already Sent P11Ds Emails.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/p11d/email/{employeeId}": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Email P11D to an Employee",
        "description": "Email a P11D to an Employee",
        "operationId": "EmailP11DReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The Id of the Employee you want the email a P11D to.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "description": "The TaxYear you want P11Ds for.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/reports/p11d/email": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Email P11D to all Employees",
        "description": "Email P11D to all Employee",
        "operationId": "EmailP11DMultipleReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "description": "The TaxYear you want P11Ds for.",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "excludeEmployeesWithP11DEmailSent",
            "in": "query",
            "description": "Exclude Employees with Already Sent P11D Emails.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/papdis": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "PAPDIS File",
        "description": "Returns a PAPDIS compliant file for the PayRun and Pension Provider PAPDIS Id specified",
        "operationId": "PapdisFileReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "schemeId",
            "in": "query",
            "description": "The Id of the Pension Scheme you want a file for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "csvFormat",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PensionCsvFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/PapdisDocumentReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PapdisDocumentReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PapdisDocumentReportResponse"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/PapdisDocumentReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/PapdisDocumentReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/cis300/{id}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "CIS300",
        "description": "Returns a CIS300 as a CSV or human-readable report",
        "operationId": "Cis300Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of CIS300.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/Cis300ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/fps/{id}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "FPS",
        "description": "Returns an FPS as a CSV file",
        "operationId": "FpsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of FPS.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "incAllEmployees",
            "in": "query",
            "description": "If true, then any employees that were paid earlier in the year but not on this FPS will also be included",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FpsReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/FpsReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/exb/{id}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "EXB",
        "description": "Returns an EXB as a CSV file",
        "operationId": "ExbReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of EXB.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExbReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ExbReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/AeAssessments": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "AutoEnrolment Assessments",
        "description": "Returns a list of Items representing your current Employees along with their most recent Auto Enrolment Assessment in the metadata field.",
        "operationId": "AeAssessmentsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemListReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ItemListReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/p45": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P45 For Employee",
        "description": "Get a P45 for an Employee you've marked as a leaver",
        "operationId": "P45Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "description": "The Id of the Employee you want a P45 for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{payPeriod}/{period}/{ordinal}/p45-multiple": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P45 for Multiple Employees",
        "description": "Get P45s for multiple employees for a specific period in the employer's current tax year",
        "operationId": "P45MultipleReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The employer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod of the PayRun.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "period",
            "in": "path",
            "description": "The Period of the PayRun.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "The Ordinal of the PayRun.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/reports/p45/email": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Email P45 to Employee",
        "description": "Email a P45 to an Employee you've marked as a leaver",
        "operationId": "EmailP45Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "description": "The Id of the Employee you want the email a P45 to.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/employers/{employerId}/reports/{payPeriod}/{period}/{ordinal}/p45-email-multiple": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Email P45 to multiple employees",
        "description": "Email P45 to multiple Employees you've marked as a leaver for a period in the employer's current tax year",
        "operationId": "EmailP45MutlipleReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "description": "The PayPeriod of the PayRun.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "period",
            "in": "path",
            "description": "The Period of the PayRun.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "path",
            "description": "The Ordinal of the PayRun.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{employeeId}/p11detailed": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P11 (Detailed)",
        "description": "Returns a detailed P11 Report for the given employee.",
        "operationId": "P11DetailedReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The employee Id of the employee you want to report on",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The tax year you want to report on.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/P11DetailedReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/P11DetailedReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/P11DetailedReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/p11detailed": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "All Detailed P11s For TaxYear",
        "description": "Returns all detailed P11s in a single PDF file for the TaxYear and Employer specified\r\nIf you set the accept header to \"text/html\" then unlike other reports the html is NOT in the ```Content``` field.\r\nAs there are multiple HTML documents they are encoded as a JSON array of strings in the ```Model``` field.",
        "operationId": "P11DetailedMultipleReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the employer you want to report on",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The tax year you want to report on.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{employeeId}/p11": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P11",
        "description": "Returns a P11 Report, detailing all payments and deductions for the given employee",
        "operationId": "P11Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "description": "The employee Id of the employee you want to report on",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The tax year you want to report on.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/P11ReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/P11ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/P11ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/P11ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/p30/{periodEnding}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P30",
        "description": "Returns a P30 Report summarising the employers HMRC liabilities for the period.\r\nFor available periods retrieve a list of HmrcLiability and examine the metadata.\r\nIf the accept header is set to \"text/csv\" then the periodEnding parameter is ignored and you'll receive a CSV for the entire TaxYear.",
        "operationId": "P30Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "periodEnding",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/p32": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "P32",
        "description": "Returns a P32 Report detailing the employers HMRC liabilities for the year.",
        "operationId": "P32Reports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/P32ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/P32ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/P32ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/P32ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/payments/employee": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "PayRun Payments",
        "description": "Returns a list of all employee payments that need to be made as a result of a Payrun.\r\nIf you specifically want just bank payments (employees where PayMethod is Credit) then you\r\nmay find the Bank Payment Instructions API call more useful",
        "operationId": "PayRunPaymentsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bankHoliday",
            "in": "query",
            "description": "Specifies the region whose bank holidays are to be considered in the operation.",
            "schema": {
              "$ref": "#/components/schemas/BankHolidayCollection"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "includeNonEmployeePayments",
            "in": "query",
            "description": "If set to true then we'll also include payments that need to be made to HMRC and PensionProviders",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "Will indicate what version of the payrun will be shown. If left empty, will show full pay run.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayrunPaymentsReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PayrunPaymentsReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/PayrunPaymentsReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/PayrunPaymentsReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/payrun-csv": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "PayRun CSV (deprecated)",
        "description": "Download the lines of a PayRun to a CSV file.\r\nPlease use Get PayRun CSV that now accepts a parameter for CSV type",
        "operationId": "PayRunCsvReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "summary",
            "in": "query",
            "description": "If set to true then instead of a line-by-line CSV, you'll receive a summary for each employee",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/payruncsv": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get PayRun CSV",
        "description": "Download the lines of a PayRun to a CSV file.",
        "operationId": "GetPayRunCsvReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "csvType",
            "in": "query",
            "description": "Choose the type of CSV you want to generate",
            "schema": {
              "$ref": "#/components/schemas/PayRunCsvType"
            }
          },
          {
            "name": "mappingId",
            "in": "query",
            "description": "If you provide the id of a PaymentCsvMapping that is column based then we'll return the CSV formatted accordingly",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string",
              "default": "application/json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/aeo/{employeeId}/{id}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "AEO Statement",
        "description": "Returns a statement for an Attachment Order, listing payments that have been made.",
        "operationId": "AeoStatementReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The id of the AttachmentOrder",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrderReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrderReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrderReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrderReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/gross-to-net": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Gross To Net",
        "description": "Returns a report comparing employees' gross pay with their net pay for one or more pay periods.",
        "operationId": "GrossToNetReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Defines the way to sort the data. Defaults to sorting by PayrollCode.",
            "schema": {
              "$ref": "#/components/schemas/ReportSortBy"
            }
          },
          {
            "name": "sortDescending",
            "in": "query",
            "description": "Defines whether to sort the data in descending order. Defaults to false.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "forCis",
            "in": "query",
            "description": "If true then CIS Subcontractors are reported on.\r\n            If all your employees are CIS Subcontractors then this will default to true, otherwise it defaults to false",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "Will indicate what version of the payrun will be shown. If left empty, will show full pay run.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GrossToNetReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/GrossToNetReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/GrossToNetReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/GrossToNetReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/ytd": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Year To Date Values",
        "description": "Returns a CSV file containing YTD values for all Employees on the payrun.",
        "operationId": "PayrunYtdReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/YtdReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/YtdReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/YtdReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/YtdReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/niytd": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "NI Year To Date Values",
        "description": "Returns a CSV file containing NI YTD values for all Employees on the payrun.",
        "operationId": "PayrunNiYtdReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NiYtdReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/NiYtdReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/NiYtdReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/NiYtdReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/teachersPensionEoy": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Teachers Pension Eoy Report",
        "description": "Returns a report response containing the Teachers Pension EOYC Report",
        "operationId": "TeachersPensionEoyReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "localAuthorityNumber",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "schoolEmployerType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachersPensionEoyReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/TeachersPensionEoyReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TeachersPensionEoyReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/TeachersPensionEoyReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/costanalysis": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Cost Analysis",
        "description": "Returns a report analysing the costs of a payrun or range of payruns.",
        "operationId": "CostAnalysisReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostAnalysisReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/CostAnalysisReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/CostAnalysisReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/costofemployment": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Cost Of Employment",
        "description": "Returns a report detailing the employment cost per employee for a payrun or range of payruns.",
        "operationId": "CostOfEmploymentReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostOfEmploymentReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/CostOfEmploymentReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/CostOfEmploymentReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/fullsummaryofpay": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Cost Of Employment",
        "description": "Returns a report detailing the employment cost per employee for a payrun or range of payruns.",
        "operationId": "FullSummaryOfPayReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FullSummaryOfPayReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/FullSummaryOfPayReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/FullSummaryOfPayReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/statutory-pay": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Statutory Pay",
        "description": "Returns a report detailing statutory pay for one or more pay periods.",
        "operationId": "StatutoryPayReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statutoryPayTypes",
            "in": "query",
            "description": "Comma separated values from (SAP, SHPP, SMP, SPBP, SPP)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatutoryPayReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/StatutoryPayReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/StatutoryPayReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/StatutoryPayReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/variance": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Variance Report",
        "description": "Returns a report comparing two pay periods or two ranges of pay periods.",
        "operationId": "VarianceReportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "payPeriodCompare",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "ordinalCompare",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYearCompare",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriodCompare",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriodCompare",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "showPercentage",
            "in": "query",
            "description": "If true then any variations will be shown as a percentage.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "minChange",
            "in": "query",
            "description": "Set a threshold for reporting variance. Ie, provide 0.10 and any variance below 10% will be ignored",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VarianceReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/VarianceReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/VarianceReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/VarianceReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/umbrella-reconciliation": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Umbrella Reconciliation",
        "description": "Returns an Umbrella Reconciliation report.",
        "operationId": "UmbrellaReconciliationReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "description": "Specify an employee id to report on just that employee, otherwise all employees will be included.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UmbrellaReconciliationReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/UmbrellaReconciliationReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/UmbrellaReconciliationReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/UmbrellaReconciliationReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/furlough": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "FurloughReport",
        "description": "Returns a Furlough Report.",
        "operationId": "FurloughReportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FurloughReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/FurloughReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/FurloughReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/FurloughReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/hourly-pay": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Hourly Pay",
        "description": "Returns a report summarising the hourly pay for employees for one or more pay periods.",
        "operationId": "HourlyPayReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HourlyPayReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/HourlyPayReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HourlyPayReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/HourlyPayReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/holiday": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Holiday",
        "description": "Returns a report summarising holiday usage for all employees.",
        "operationId": "HolidayReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accruals",
            "in": "query",
            "description": "If set to true then you'll receive a report for holiday pay accruals instead of holiday allowances. Defaults to false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "accrualsHrs",
            "in": "query",
            "description": "If set to true then you'll receive a report for holiday pay accruals hours. Defaults to false.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HolidayReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/HolidayReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HolidayReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/HolidayReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/right-to-work": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "RightToWork",
        "description": "Returns a report summarising RightToWork information for all employees.",
        "operationId": "RightToWorkReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RightToWorkReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/RightToWorkReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/RightToWorkReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/RightToWorkReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/payments/employee/credit": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Bank Payment Instructions",
        "description": "Returns a list of bank payments that need to be made to employees as a result of a Payrun.\r\nYou can optionally provide a PaymentDate and only payments for that date will be returned.",
        "operationId": "BankPaymentInstructionsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "bankHoliday",
            "in": "query",
            "description": "Specifies the region whose bank holidays are to be considered in the operation.",
            "schema": {
              "$ref": "#/components/schemas/BankHolidayCollection"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "incPensions",
            "in": "query",
            "description": "Set to true and we'll include any payment due to Pension Providers",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "incHmrc",
            "in": "query",
            "description": "Set to true and we'll include any payment due to HMRC",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "incAeos",
            "in": "query",
            "description": "Set to true and we'll include any payment due as a result of AttachmentOrders",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "incDeductions",
            "in": "query",
            "description": "Set to true and we'll include any payment due to Deductions that are set to be paid to a Payee",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "Will indicate what version of the payrun will be shown. If left empty, will show full pay run.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankPaymentInstructionReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/BankPaymentInstructionReportResponse"
                }
              },
              "application/zip": {
                "schema": {
                  "$ref": "#/components/schemas/BankPaymentInstructionReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/cisstatement/{taxMonth}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "CIS Statement",
        "description": "Returns a CIS Statement for the employee specified.",
        "operationId": "CisStatementReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "taxMonth",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "description": "Specify an employeeId to get a single statement.\r\n            If you don't provide a value then all Subcontractors will be included.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/CisStatementListReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisStatementListReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/cissummary": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "CIS Subcontractor Summary",
        "description": "Returns a list of all CIS Subcontractors along with verification details",
        "operationId": "CisSubContractorSummaryReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/CisSubContractorSummaryListReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/CisSubContractorSummaryListReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/CisSubContractorSummaryListReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisSubContractorSummaryListReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/payrunsummary": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "PayRunSummary",
        "description": "Returns an array of PayRunSummaryLine for one or multiple periods. Similar to a PayRunJournal except that it can cover multiple periods.",
        "operationId": "PayRunSummaryReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "deptCode",
            "in": "query",
            "description": "If specified then only employees assigned to this department code at the time of the payrun will be included",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeQty",
            "in": "query",
            "description": "If set to true and acceptType is text/csv, then where a PayCode on a PayLine is a multiplier code we'll include a Qty value for the number of days/hours",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunSummaryLineIEnumerableReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PayRunSummaryLineIEnumerableReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/analysis": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Analysis",
        "description": "Returns an AnalysisReport for one or multiple periods.",
        "operationId": "AnalysisReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "deptCode",
            "in": "query",
            "description": "If specified then only employees assigned to this department code at the time of the payrun will be included",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "showPayPeriodBreakdown",
            "in": "query",
            "description": "If set to true, then the report will show a breakdown of each period for each employee",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalysisReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/AnalysisReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/analysiscostbreakdown": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Analysis Cost Breakdown",
        "description": "Returns an AnalysisCostBreakdownReport for one or multiple periods.",
        "operationId": "PayrollAnalysisCostBreakdownReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "deptCode",
            "in": "query",
            "description": "If specified then only employees assigned to this department code at the time of the payrun will be included",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayrollAnalysisCostBreakdownReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PayrollAnalysisCostBreakdownReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/analysisemployeerolebreakdown": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Payroll Analysis with Employee Role Breakdown",
        "description": "Return a Payroll Analysis Report with Employee Role Breakdown for a specified pay period.\r\nIf a department code is specified, only employees assigned to this department at the time of the payrun will be included.",
        "operationId": "PayrollAnalysisEmployeeRoleBreakdownReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "deptCode",
            "in": "query",
            "description": "Optional. Filters employees by department code.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayrollAnalysisEmployeeRoleBreakdownReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PayrollAnalysisEmployeeRoleBreakdownReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/{id}/payslip": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Payslip",
        "description": "Returns a single Payslip for the given PayRunEntry of a PayRun. The type of response depends on the accept header.",
        "operationId": "PayslipReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the PayRunEntry.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "differenceOnly",
            "in": "query",
            "description": "If the PayRunEntry is part of a supplementary PayRun and this is set to true, the PayRunEntry will contain the differences between the current pay run version of the PayRunEntry and its previous version",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/PayslipReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayslipReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/PayslipReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/PayslipReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/payslips": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Payslips",
        "description": "Returns all Payslips for the given PayRun\r\nIf you set the accept header to \"text/html\" then unlike other reports the html is NOT in the ```Content``` field.\r\nAs there are multiple HTML documents they are encoded as a JSON array of strings in the ```Model``` field.",
        "operationId": "PayslipsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "unemailed",
            "in": "query",
            "description": "Set this to True if you only want the Payslips that haven't been sent by email",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "deptCode",
            "in": "query",
            "description": "Set if you want to filter by department",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startersLeaversFilter",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/StartersLeaversFilter"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayRunEntrySortBy"
            }
          },
          {
            "name": "sortDescending",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "Will indicate what version of the payrun will be shown. If left empty, will show full pay run.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "differenceOnly",
            "in": "query",
            "description": "If the selected pay run is supplementary run and this is set to true, this will contain the differences between the current pay run version of the PayRunEntry and its previous version",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/payslip/example/pdf": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Example Payslip",
        "description": "Use this operation to test your PayslipCustomisation.\r\nWe'll use dummy date and create a Payslip PDF or HTML document based on the customisation that you submit",
        "operationId": "ExamplePayslipReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Your PayslipCustomisation.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayslipCustomisation"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employees": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Employee Export Details",
        "description": "Returns a CSV file containing details for all Employees.",
        "operationId": "EmployeeExportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "includeBankAccountDetails",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includeYtd",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "incPensionInfo",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includePayInfo",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includeNotes",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/ytd": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Year To Date Values",
        "description": "Returns a CSV file containing YTD values for all Employees.",
        "operationId": "YtdReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/niytd": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "NI Year To Date Values",
        "description": "Returns a CSV file containing NI YTD values for all Employees.",
        "operationId": "NiYtdReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/taxcode": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Taxcode Change",
        "description": "Returns a CSV file containing Tax Code Changes values for all Employees.",
        "operationId": "TaxCodeChangesReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxCodeChangeReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/TaxCodeChangeReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TaxCodeChangeReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/TaxCodeChangeReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/employers": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Employer Export",
        "description": "Returns a CSV file containing details for all Employers.",
        "operationId": "EmployerExportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of any employer to which you have access. It wont affect the report results.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/NiLetterValidationReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "NI Letter Validation (Payrun)",
        "description": "Checks the NI Letters allocated to employees on a specific payrun",
        "operationId": "NiLetterValidationReportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NiLetterValidationReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/NiLetterValidationReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/NiLetterValidationReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/NiLetterValidationReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "NI Letter Validation (Employees)",
        "description": "Checks the NI Letters allocated to your employees. If no pay date is provided, the checks are based on today's date.",
        "operationId": "NiLetterValidationReportEmployeesReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "payDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NiLetterValidationReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/NiLetterValidationReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/NiLetterValidationReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/EmployeeBenefits": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Employee Benefits",
        "description": "Returns a output containing details for employee benefits.",
        "operationId": "EmployeeBenefitsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "reportType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeBenefitsReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeBenefitsReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeBenefitsReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/attachmentorders": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Attachment Orders",
        "description": "Returns a report detailing attachment of earning order deductions for one or multiple periods.",
        "operationId": "AttachmentOrdersReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrdersReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrdersReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentOrdersReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/changes": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Gets audit changes of all employees within a company.",
        "operationId": "ChangesReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of any employer to which you have access.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeSummaryListReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeSummaryListReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/employerchanges": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Gets audit changes for a company.",
        "operationId": "EmployerChangesReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of any employer to which you have access.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeSummaryListReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeSummaryListReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/paycodes": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Pay Code Export Details",
        "description": "Returns details for all Pay Codes.",
        "operationId": "PayCodeExportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/payGrades": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Pay Grade",
        "description": "Returns a report for Pay Grade.",
        "operationId": "PayGradesReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "effectiveDateFrom",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "effectiveDateTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paySpineId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayGradesReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PayGradesReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/PayGradesReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/spinepoints": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Spine Point",
        "description": "Returns a report for Spine Point.",
        "operationId": "SpinePointReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "effectiveDateFrom",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "effectiveDateTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpinePointReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/SpinePointReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/SpinePointReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/payspines": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Pay Spine",
        "description": "Returns a report for Pay Spine.",
        "operationId": "PaySpineReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "paySpineId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaySpineReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PaySpineReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/PaySpineReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/averageholidaypayrate": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Average Holiday Pay Rate",
        "description": "Returns a report for average holiday pay rate.",
        "operationId": "AverageHolidayPayRateReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AverageHolidayPayRateReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/AverageHolidayPayRateReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/AverageHolidayPayRateReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/AverageHolidayPayRateReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employeeroles": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Employee Export Roles Details",
        "description": "Returns a CSV file containing details for all Employee Roles.",
        "operationId": "EmployeeRoleExportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/downloadmaternityschedules": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Download Maternity Payment Schedule",
        "description": "Returns a Maternity Pay schedule for employee",
        "operationId": "DownloadMaternitySchedulesReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Leave"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/GenderPayGap": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Gender Pay Gap",
        "description": "Returns a report containing details for gender pay gap analysis.",
        "operationId": "GenderPayGapReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "genderPayGapSnapShotDate",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/GenderPayGapSnapShotDate"
            }
          },
          {
            "name": "ordinaryPayCodeSetId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "bonusPayCodeSetId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/GenderPayGapReportReportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenderPayGapReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/GenderPayGapReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/GenderPayGapReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/pensionmemberships": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Export Multiple Pension Memberships Report",
        "description": "Returns a report for Multiple Pension Memberships",
        "operationId": "PensionMembershipsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PensionMembershipsReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PensionMembershipsReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/PensionMembershipsReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/PensionMembershipsReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/pay-element": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Pay Element",
        "description": "Returns a report detailing pay elements for one or more pay periods.",
        "operationId": "PayElementReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "fromPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "toPeriod",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "payCodes",
            "in": "query",
            "description": "Comma separated values of pay codes, e.g., (BASIC,BASICANNUAL,BASICDAILY)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayElementReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/PayElementReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/PayElementReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/PayElementReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{payPeriod}/loanbalances": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Loan Balances",
        "description": "Returns the Loan Balances report for the given pay schedule",
        "operationId": "LoanBalancesReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "outstandingOnly",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoanBalancesReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/LoanBalancesReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/LoanBalancesReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/LoanBalancesReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/PayrollRunWarnings": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Export Payroll Run Warnings",
        "description": "Returns a report for payroll warnings",
        "operationId": "WarningsReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WarningsReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/WarningsReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/WarningsReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{taxYear}/{payPeriod}/{periodNumber}/payrolljournalcsv": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Payroll Journal CSV",
        "description": "Download the lines of Payroll Journal to CSV file.",
        "operationId": "PayrollJournalCsvReportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "periodNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "deptBreakdown",
            "in": "query",
            "description": "Set to true and the journal will be split between any relevant Departments",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeApprenticeLevy",
            "in": "query",
            "description": "Set to true to include Apprenticeship Levy amounts in the journal if the employer is liable",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "allSchedules",
            "in": "query",
            "description": "Set to true to display Apprenticeship Levy amount for all schedules; otherwise, only for the selected schedule in the journal",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/employeeleave": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Employee Leave",
        "description": "Returns the Employee Leave report for the selected tax year. If the tax year is not selected, returns the Employee Leave report for all the leave entries.",
        "operationId": "EmployeeLeaveReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeLeaveReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeLeaveReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/advancedvariance": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Advanced Variance Report",
        "description": "Returns a report comparing one period to another period.",
        "operationId": "AdvancedVarianceReportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYear",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taxYearCompare",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "periodCompare",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "payCodes",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdvancedVarianceReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/AdvancedVarianceReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/{payPeriod}/employeepayments": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Employee Payments Report",
        "description": "Returns a payments report for all employees for given pay schedule.",
        "operationId": "EmployeePaymentsReportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeePaymentsReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeePaymentsReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeePaymentsReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.EmployeePaymentsReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeePaymentsReportLineListReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeePaymentsReportLineListReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/p45-availability": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get P45 Download Availability",
        "description": "Checks if there are leavers in each pay run of the employer's current tax year for downloading P45.",
        "operationId": "GetP45AvailabilityReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.P45AvailabilityResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/reports/{payPeriod}/employeeloanexport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Employee Loan Export",
        "description": "Returns the Employees Loan Export report for the given pay schedule",
        "operationId": "EmployeeLoanExportReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payPeriod",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordinal",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeLoanExportReportReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeLoanExportReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports/cyclicreenrolment": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Export Cyclic Re-enrolments",
        "description": "Returns a report for Cyclic Re-enrolments for a given re-enrolment date.",
        "operationId": "CyclicReenrolmentReports",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reenrolmentDate",
            "in": "query",
            "description": "The re-enrolment date in the format YYYY-MM-DD.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CyclicReenrolmentReportReportResponse"
                }
              },
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/CyclicReenrolmentReportReportResponse"
                }
              },
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/CyclicReenrolmentReportReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reports-async/{templateId}": {
      "post": {
        "tags": [
          "ReportsAsync"
        ],
        "summary": "Execute report template",
        "description": "Returns a job created to process a report using custom report templates. \r\nThis endpoint is being beta tested and subject to un-announced breaking changes.\r\nUse the GET of Jobs to get the status and response of the job.",
        "operationId": "ExecuteCustomReportReportsAsync",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CustomReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CustomReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CustomReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CustomReportRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/reports-async/CombinedPensionContributions": {
      "post": {
        "tags": [
          "ReportsAsync"
        ],
        "summary": "Execute Combined Pension Contributions Report",
        "description": "Returns a job created to process a Combined Pension Contributions report. \r\nThis endpoint is being beta tested and subject to un-announced breaking changes.\r\nUse the GET of Jobs to get the status and response of the job.",
        "operationId": "ExecuteCombinedPensionContributionsReportReportsAsync",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CombinedPensionContributionsReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CombinedPensionContributionsReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CombinedPensionContributionsReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.CombinedPensionContributionsReportRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/employers/{employerId}/reports-async/{taxYear}/p60": {
      "post": {
        "tags": [
          "ReportsAsync"
        ],
        "summary": "All P60s For TaxYear (Beta)",
        "description": "Returns a job created to process P60 End of Year Certificates.\r\nUpon completion the job will contain all P60s in a single PDF file for the TaxYear and Employer specified\r\nThis endpoint is being beta tested and subject to un-announced breaking changes.\r\nUse the GET of Jobs to get the status and response of the job.",
        "operationId": "P60MultipleAsyncReportsAsync",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taxYear",
            "in": "path",
            "description": "The TaxYear you want P60s for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaxYear"
            }
          },
          {
            "name": "excludeEmployeesWithP60EmailSent",
            "in": "query",
            "description": "Exclude Employees with Already Sent P60 Emails.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Conflict"
          }
        }
      }
    },
    "/contentdictionary": {
      "get": {
        "tags": [
          "ReportTemplate"
        ],
        "summary": "Get Content Dictionary For Report Template Column Type(beta)",
        "description": "Gets the content dictionary for ReportTemplate columns type for employee and employer.",
        "operationId": "GetContentDictionaryReportTemplate",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.ReportTemplateContentDictionaryResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/column/validate": {
      "post": {
        "tags": [
          "ReportTemplate"
        ],
        "summary": "Validate Report Template Columns(beta)",
        "description": "Validates the specified Report Template columns.",
        "operationId": "ValidateReportTemplateColumnsReportTemplate",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateColumnRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateColumnRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateColumnRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateColumnRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/reporttemplate": {
      "get": {
        "tags": [
          "ReportTemplate"
        ],
        "summary": "List Report Templates (beta)",
        "description": "Lists all Report Templates for an Employer.",
        "operationId": "IndexReportTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Report Template belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ReportTemplate"
        ],
        "summary": "Create Report Template (beta)",
        "description": "Creates a new Report Template for the Employer.",
        "operationId": "CreateReportTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Report Template belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.ReportTemplateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/reporttemplate/{id}": {
      "get": {
        "tags": [
          "ReportTemplate"
        ],
        "summary": "Get Report Template (beta)",
        "description": "Gets the Report Template specified.",
        "operationId": "GetReportTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Report Template belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Report Template which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.ReportTemplateResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Report Template Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "ReportTemplate"
        ],
        "summary": "Update Report Template (beta)",
        "description": "Updates a Report Template for the Employer.",
        "operationId": "UpdateReportTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Report Template belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Report Template which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.ReportTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.ReportTemplateResponse"
                }
              }
            }
          },
          "404": {
            "description": "Employer or Report Template Not Found"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "ReportTemplate"
        ],
        "summary": "Delete Report Template (beta)",
        "description": "Deletes the specified Report Template.",
        "operationId": "DeleteReportTemplate",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Report Template belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Report Template which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Employer or Report Template Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/tags": {
      "get": {
        "tags": [
          "Tag"
        ],
        "summary": "List Tags",
        "description": "Lists all Tags for an Employer.",
        "operationId": "IndexTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Tags",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tag"
        ],
        "summary": "Create Tag",
        "description": "Creates a new Tag for the Employer.",
        "operationId": "CreateTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Tag belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The new values for the Tag you want to update.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/tags/{code}": {
      "get": {
        "tags": [
          "Tag"
        ],
        "summary": "Get Tag (deprecated)",
        "description": "Gets the Tag specified.",
        "operationId": "GetTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Tag belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "description": "The code of the Tag you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tag"
        ],
        "summary": "Update Tag (deprecated)",
        "description": "Updates a Tag for the Employer.",
        "operationId": "UpdateTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Tag belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "description": "The existing code of the Tag you want to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new values for the Tag you want to update.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Tag"
        ],
        "summary": "Delete Tag (deprecated)",
        "description": "Deletes the specified Tag.",
        "operationId": "DeleteTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Tag belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "path",
            "description": "The code of the Tag you want to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/tags/Tag": {
      "get": {
        "tags": [
          "Tag"
        ],
        "summary": "Get Tag",
        "description": "Gets the Tag specified.",
        "operationId": "GetTagTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Tag belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The code of the Tag you want to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/tags/tag": {
      "put": {
        "tags": [
          "Tag"
        ],
        "summary": "Update Tag",
        "description": "Updates the details of an existing Tag.",
        "operationId": "UpdateTagTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Tag belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The existing code of the Tag you want to update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new values for the Tag you want to update.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Tag"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tag"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Tag"
        ],
        "summary": "Delete Tag",
        "description": "Deletes the specified Tag.",
        "operationId": "DeleteTagTag",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Tag belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "The code of the Tag you want to delete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/tenants": {
      "post": {
        "tags": [
          "Tenant"
        ],
        "summary": "Create a Tenant",
        "description": "Use this method to create a new Tenant\r\nOnly available to SuperAdmins",
        "operationId": "CreateTenant",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success - \r\nthe Tenant has been created and is returned in the body.\r\nThe unique URL for this Tenant is returned in the Location header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tenant"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/tenants/{id}": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get a Tenant",
        "description": "If you are an administrator for a Tenant then you can retrieve the settings for it using this API call",
        "operationId": "GetTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tenant"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update a Tenant",
        "description": "If you are an administrator for a Tenant then you can update the settings for it using this API call",
        "operationId": "UpdateTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Tenant"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tenant"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/css": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update CSS",
        "description": "Update the custom CSS for a Tenant",
        "operationId": "UpdateCssTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "string"
              }
            },
            "application/json": {
              "schema": {
                "type": "string"
              }
            },
            "text/json": {
              "schema": {
                "type": "string"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/css/colors": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update CSS Colors",
        "description": "Update the colors for a Tenant",
        "operationId": "UpdateCssColorsTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StringStringKeyValuePair"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StringStringKeyValuePair"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/logo": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Upload Logo",
        "description": "Upload an image to use as your main logo. We'll upload it and set the URL on the HomeImgUrl property of the Tenant.",
        "operationId": "UpdateLogoTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tenant"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/favicon": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Upload Favicon",
        "description": "Upload an image to use as favicon. We'll upload it and set the URL on the FavIcon property of the Tenant.",
        "operationId": "UpdateFavIconTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tenant"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/users": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "List Users",
        "description": "Returns a list of users for the Tenant",
        "operationId": "UsersTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to list Users for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortByLastLogin",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/UserCategory"
            }
          },
          {
            "name": "isBureauMember",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/users/admins": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "List Admin Users",
        "description": "Returns a list of admin users for the Tenant",
        "operationId": "AdminUsersTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to list admin Users for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tenant"
        ],
        "summary": "Remove Admin User",
        "description": "Removes the specified admin user for the Tenant",
        "operationId": "RemoveAdminUserTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to remove the  admin User from.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "string"
              }
            },
            "application/json": {
              "schema": {
                "type": "string"
              }
            },
            "text/json": {
              "schema": {
                "type": "string"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "tags": [
          "Tenant"
        ],
        "summary": "Add Admin User",
        "description": "Adds the specified user as an admin for the Tenant",
        "operationId": "AddAdminUserTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to remove the  admin User from.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "string"
              }
            },
            "application/json": {
              "schema": {
                "type": "string"
              }
            },
            "text/json": {
              "schema": {
                "type": "string"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/tenants/{id}/users/search": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Search Users",
        "description": "Returns a list of users for the Tenant that match the search",
        "operationId": "UsersSearchTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to search Users for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get a User",
        "description": "Returns details of a User that belongs to the Tenant",
        "operationId": "UserTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to get a User for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update a User",
        "description": "Set the details of a User that belongs to the Tenant",
        "operationId": "UpdateUserTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to update a User for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The Id of the User.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The User details.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/bills": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get User Bills",
        "description": "Returns all UsageBills for a User",
        "operationId": "UserBillsTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to get a Users UsageBills for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/employers": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get User Employers",
        "description": "Returns Employer details for a User that belongs to the Tenant",
        "operationId": "UserEmployersTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to get User Employers for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/disabled": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Disable User Account",
        "description": "Disables (or re-enabled) a user account",
        "operationId": "DisabledTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "disabled",
            "in": "query",
            "description": "Whether or not the account should be disabled.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "loginDisabled",
            "in": "query",
            "description": "Whether or not the account should have log in permissions.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "description": "A message to show the user explaining why the account is disabled.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "string"
              }
            },
            "application/json": {
              "schema": {
                "type": "string"
              }
            },
            "text/json": {
              "schema": {
                "type": "string"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/employercreation": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Enable Employer Creation",
        "description": "Enable (or disable) a user accounts ability to create new employers",
        "operationId": "EmployerCreationTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "enabled",
            "in": "query",
            "description": "Whether or not the account can create employers.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/tenant": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set User Tenant",
        "description": "Changes the Tenant for a User. Only applicable if you manage two or more Tenants",
        "operationId": "SetTenantTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant the user is currently assigned to.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "newTenantId",
            "in": "query",
            "description": "The Id of the Tenant the user is to be assigned to.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/accounting": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set User Accounting Id",
        "description": "Updates the Customer Accounting Id for a user",
        "operationId": "SetAccountingIdTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountingId",
            "in": "query",
            "description": "The CustomerAccountingId for the user.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/pricingtable": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set User PricingTableId",
        "description": "Updates the Customer Accounting Id for a user",
        "operationId": "SetPricingTableIdTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pricingTableId",
            "in": "query",
            "description": "The PricingTable Id for the user. Provide null and the user will use the Tenant default",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/monthlyminimum": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set Monthly Minimum",
        "description": "Updates the MonthlyMinimum subscription charge for a user",
        "operationId": "SetMonthlyMinimumTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MonthlyMinimum"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MonthlyMinimum"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MonthlyMinimum"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MonthlyMinimum"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/bureauredir": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set Bureau Redirect",
        "description": "Sets or removes the redirect email address for a users Bureau-related notifications",
        "operationId": "SetBureauRedirectEmailAddressTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "emailAddress",
            "in": "query",
            "description": "The email address to redirect to, or an empty string to remove the redirect.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/bills/{year}/{month}": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Bills",
        "description": "Returns a list of UsageBill for Users of this Tenant, for the Year and Month supplied",
        "operationId": "BillsTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant you want to list bills for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "month",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeNetSuiteBills",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/bills/{year}/{month}/{billId}": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Bill",
        "description": "Returns details of a UsageBill for a User of this Tenant",
        "operationId": "BillTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant the bill belongs to.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "month",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "billId",
            "in": "path",
            "description": "The Id of the UsageBill.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageBill"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update Bill",
        "description": "Updates the UsageBill.",
        "operationId": "UpdateBillTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant the bill belongs to.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "month",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "billId",
            "in": "path",
            "description": "The Id of the UsageBill.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UsageBill"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UsageBill"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UsageBill"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UsageBill"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageBill"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/usage/{year}/{month}": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Usage",
        "description": "Returns activity for Users of this Tenant, for the Year and Month supplied",
        "operationId": "UsageTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "month",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/employers/{employerId}/usage": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Employer Usage",
        "description": "Returns all activity for the given Employer",
        "operationId": "EmployerUsageTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/employers/{employerId}/users": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Employer Users",
        "description": "Returns all users for the given Employer",
        "operationId": "EmployerUsersTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/reports/users/nobillableactivity": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Users with no Billable Activity.",
        "description": "Returns a .csv file containing users created in or before the given month that do not have billable activity.",
        "operationId": "GetUsersWithNoBillableActivityTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "month",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/reports/weeklyactivity": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Weekly Activity Report",
        "description": "Returns a report detailing User activity, summarised by week, for the given date range",
        "operationId": "WeeklyActivityTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allTenants",
            "in": "query",
            "description": "If set to true then the report will include all Tenants to which you have access",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/reports/netsuitebills": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "NetSuite Billing Report",
        "description": "Returns a report detailing billing, for NetSuite, for the given year and month\r\nOnly available to SuperAdmins",
        "operationId": "NetSuiteBillingTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "year",
            "in": "query",
            "description": "The year of the billing period",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "month",
            "in": "query",
            "description": "The month of the billing period",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allTenants",
            "in": "query",
            "description": "If set to true then the report will include all Tenants to which you have access",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/bills": {
      "post": {
        "tags": [
          "Tenant"
        ],
        "summary": "Create Bills for Period",
        "description": "Generates usage and creates bills for all Tenants\r\nOnly available to SuperAdmins",
        "operationId": "CreateBillsTenant",
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "202": {
            "description": "Started generating bills"
          }
        }
      }
    },
    "/tenants/ritsubmissionsettings": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get RtiSubmissionSettings",
        "description": "If the Tenant has BureauFeaturesEnabled then they can store RtiSubmissionSettings for use across multiple employers.\r\nThis end point returns them RtiSubmissionSettings.",
        "operationId": "GetRtiSubmissionSettingsTenant",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Id of the Tenant.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RtiSubmissionSettings"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update RtiSubmissionSettings",
        "description": "If the Tenant has BureauFeaturesEnabled then they can store RtiSubmissionSettings for use across multiple employers.\r\nThis end point updates the RtiSubmissionSettings.",
        "operationId": "UpdateRtiSubmissionSettingsTenant",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Id of the Tenant.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RtiSubmissionSettings"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RtiSubmissionSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RtiSubmissionSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RtiSubmissionSettings"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RtiSubmissionSettings"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/pricingtables": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get PricingTables",
        "description": "Returns all PricingTables for the Tenant",
        "operationId": "GetPricingTablesTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tenant"
        ],
        "summary": "Create PricingTable",
        "description": "Create a PricingTable",
        "operationId": "CreatePricingTableTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingTable"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/tenants/{id}/pricingtables/{pricingTableId}": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get PricingTable",
        "description": "Get a PricingTable",
        "operationId": "GetPricingTableTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pricingTableId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingTable"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingTable"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update PricingTable",
        "description": "Update a PricingTables",
        "operationId": "UpdatePricingTableTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pricingTableId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PricingTable"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingTable"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "Tenant"
        ],
        "summary": "Delete PricingTable",
        "description": "Delete a PricingTable",
        "operationId": "DeletePricingTableTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pricingTableId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/businessname": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set User Business Name",
        "description": "Updates the Business Name for a User",
        "operationId": "SetBusinessNameTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The Id of the User.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "businessName",
            "in": "query",
            "description": "The Business Name for the User.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/industry": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set Industry",
        "description": "Updates the Industry for a User",
        "operationId": "SetIndustryTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The Id of the User.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "industry",
            "in": "query",
            "description": "The Industry for the User.",
            "schema": {
              "$ref": "#/components/schemas/UserIndustry"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/employeecount": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set Employee Count",
        "description": "Updates the Employee Count for a User",
        "operationId": "SetEmployeeCountTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The Id of the User.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "employeeCount",
            "in": "query",
            "description": "The Employee Count for the User.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/country": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set Country",
        "description": "Updates the Country for a User",
        "operationId": "SetCountryTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The Id of the User.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "The Country for the User.",
            "schema": {
              "$ref": "#/components/schemas/Country"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/users/{userId}/address": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set Address",
        "description": "Updates the Address for a User",
        "operationId": "SetAddressTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The Id of the User.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/reports/apimailinglist": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Api Mailing List Report",
        "description": "Returns a report of active users that have asked to be updated about API across all tenants.",
        "operationId": "GetApiMailingListReportTenant",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/reports/apimailinglist": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Api Mailing List Report",
        "description": "Returns a report of active users that have asked to be updated about API for specific tenant.",
        "operationId": "GetApiMailingListReportByIdTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/users/employers": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Employers",
        "description": "Returns all the employers of all the users of the Tenant",
        "operationId": "GetEmployersTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/payrollsquad": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Payroll Squads",
        "description": "Returns all Payroll Squad for the Tenant",
        "operationId": "GetPayrollSquadsTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "post": {
        "tags": [
          "Tenant"
        ],
        "summary": "Create Payroll Squad",
        "description": "Create a Payroll Squad",
        "operationId": "CreatePayrollSquadTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PayrollSquadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/payrollsquad/{payrollSquadId}": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Payroll Squad",
        "description": "Get a Payroll Squad",
        "operationId": "GetPayrollSquadTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payrollSquadId",
            "in": "path",
            "description": "The id of payroll squad",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PayrollSquadResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PayrollSquadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "Tenant"
        ],
        "summary": "Delete Payroll Squad and it's Members and Employers.",
        "description": "Delete Payroll Squad with it's Members and Employers.",
        "operationId": "DeletePayrollSquadTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payrollSquadId",
            "in": "path",
            "description": "The id of payroll squad",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/payrollsquad/employers": {
      "post": {
        "tags": [
          "Tenant"
        ],
        "summary": "Update Payroll Squad Employers",
        "description": "Update Payroll Squad Employers",
        "operationId": "PayrollSquadUpdateEmployersTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadEmployerRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadEmployerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadEmployerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadEmployerRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.PayrollSquadEmployerResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/payrollsquad/member": {
      "post": {
        "tags": [
          "Tenant"
        ],
        "summary": "Add Payroll Squad Member",
        "description": "Add Payroll Squad Member",
        "operationId": "PayrollSquadAddMemberTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadMemberRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.PayrollSquadMemberRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.PayrollSquadMemberResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/payrollsquad/{payrollSquadId}/member/{payrollSquadMemberId}": {
      "delete": {
        "tags": [
          "Tenant"
        ],
        "summary": "Delete Payroll Squad Member",
        "description": "Delete a Payroll Squad Member",
        "operationId": "DeletePayrollSquadMemberTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current tenant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payrollSquadId",
            "in": "path",
            "description": "The id of payroll squad",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payrollSquadMemberId",
            "in": "path",
            "description": "The id of payroll squad member",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/bureau-usage-stats": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get UsageStats Report",
        "description": "Returns usage statistics data for all employers the logged in user has access to for the given date range.\r\nIf either of the dates are not provided then the values are defaulted to the first and last date of the previous calendar month.",
        "operationId": "GetBureauUsageStatsTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              },
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/admin/evc": {
      "put": {
        "tags": [
          "Tenant"
        ],
        "summary": "Set Evc",
        "description": "Disables or enables EVC for a tenant.",
        "operationId": "SetEvcTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the tenant",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "disableEvc",
            "in": "query",
            "description": "A boolean value indicating whether to disable or enable EVC at tenant level.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/payrollsquads": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Get Payroll Squad Members for Employer",
        "description": "Returns all Payroll Squad Members for the Employer",
        "operationId": "GetPayrollSquadMembersTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Current Employer id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/tenants/{id}/reports/automation-usage-data": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "summary": "Automation Usage Data Report",
        "description": "Returns automation usage data for the tenant.",
        "operationId": "GetAutomationUsageDataTenant",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        }
      }
    },
    "/tenants/{id}/email": {
      "get": {
        "tags": [
          "TenantEmail"
        ],
        "summary": "List Emails",
        "description": "Returns a list of all emails sent for this Tenant.",
        "operationId": "IndexTenantEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/email/{emailId}": {
      "get": {
        "tags": [
          "TenantEmail"
        ],
        "summary": "Get Email",
        "description": "Returns the email along with its status.",
        "operationId": "GetEmailTenantEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "emailId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TenantEmail"
        ],
        "summary": "Re-send Email",
        "description": "Re-sends an existing email.",
        "operationId": "ResendEmailTenantEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "emailId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmail"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/email/settings": {
      "get": {
        "tags": [
          "TenantEmail"
        ],
        "summary": "Get MailSettings",
        "description": "Returns the MailSettings for a Tenant.",
        "operationId": "GetMailSettingsTenantEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailSettings"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "TenantEmail"
        ],
        "summary": "Update MailSettings",
        "description": "Updates the MailSettings for a Tenant.",
        "operationId": "UpdateMailSettingsTenantEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MailSettings"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailSettings"
                }
              }
            }
          }
        }
      }
    },
    "/tenants/{id}/email/settings/test": {
      "post": {
        "tags": [
          "TenantEmail"
        ],
        "summary": "Send test email",
        "description": "This API call will generate a test email based on your MailSettings.",
        "operationId": "TestMailSettingsTenantEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Tenant",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "The address to send a test email to",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployerEmail"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/termcalendars": {
      "get": {
        "tags": [
          "TermCalendar"
        ],
        "summary": "List Term Calendars",
        "description": "Lists all Term Calendars for an Employer.",
        "operationId": "IndexTermCalendar",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get the Term Calendar list",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.TermCalendarResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "post": {
        "tags": [
          "TermCalendar"
        ],
        "summary": "Create Term Calendar",
        "description": "Creates a new Term Calendar for the Employer.",
        "operationId": "CreateTermCalendar",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which new Term Calendar will be created.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.TermCalendarResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/termcalendars/{id}": {
      "get": {
        "tags": [
          "TermCalendar"
        ],
        "summary": "Get Term Calendar",
        "description": "Gets a specified Term Calendar.",
        "operationId": "GetTermCalendar",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Term Calendar belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Term Calendar which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.TermCalendarResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "TermCalendar"
        ],
        "summary": "Update Term Calendar",
        "description": "Updates a Term Calendar for the Employer.",
        "operationId": "UpdateTermCalendar",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Term Calendar belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Term Calendar which you want to update",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.TermCalendarResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "TermCalendar"
        ],
        "summary": "Delete Term Calendar",
        "description": "Deletes a specified Term Calendar.",
        "operationId": "DeleteTermCalendar",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Term Calendar belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Term Calendar which you want to delete",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/termcalendaryears/{termCalendarId}": {
      "get": {
        "tags": [
          "TermCalendarYear"
        ],
        "summary": "List Term Calendar Years",
        "description": "Lists all Years for an Employer and given Term Calendar.",
        "operationId": "IndexTermCalendarYear",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to get Term Calendar Year list",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "termCalendarId",
            "in": "path",
            "description": "The Id of the Term Calendar for which you want to list Years",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract.TermCalendarYearResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "post": {
        "tags": [
          "TermCalendarYear"
        ],
        "summary": "Create Term Calendar Year",
        "description": "Creates a new Year data for the Employer and given Term Calendar.",
        "operationId": "CreateTermCalendarYear",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Term Calendar Year belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "termCalendarId",
            "in": "path",
            "description": "The Id of the Term Calendar which you want to add a new year",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.TermCalendarYearResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/termcalendaryears/{termCalendarId}/{id}": {
      "get": {
        "tags": [
          "TermCalendarYear"
        ],
        "summary": "Get Term Calendar Year",
        "description": "Gets a specified Term Calendar Year.",
        "operationId": "GetTermCalendarYear",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Term Calendar Year belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "termCalendarId",
            "in": "path",
            "description": "The Id of the Term Calendar to which the Year belongs",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Term Calendar Year which you want to fetch",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.TermCalendarYearResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "TermCalendarYear"
        ],
        "summary": "Update Term Calendar Year",
        "description": "Updates Year data for the Employer and given Term Calendar.",
        "operationId": "UpdateTermCalendarYear",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Term Calendar Year belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "termCalendarId",
            "in": "path",
            "description": "The Id of the Term Calendar which you want to update existing year",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Term Calendar Year which you want to update data",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.TermCalendarYearRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.TermCalendarYearResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "TermCalendarYear"
        ],
        "summary": "Delete Term Calendar Year",
        "description": "Deletes a specified Term Calendar Year.",
        "operationId": "DeleteTermCalendarYear",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Term Calendar Year belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "termCalendarId",
            "in": "path",
            "description": "The Id of the Term Calendar which you want to delete a year",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the Term Calendar Year which you want to delete",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/tierablepay/{payrunEntryId}": {
      "get": {
        "tags": [
          "TierablePay"
        ],
        "summary": "Calculate tierable pay",
        "operationId": "GetTierablePay",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "Employer ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payrunEntryId",
            "in": "path",
            "description": "Payrun entry ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          }
        }
      }
    },
    "/tools/calculate-net-of-on-costs": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Calculate Net of On Costs",
        "description": "Calculate the Gross Daily Pay and typical Net Costs for an employee.\r\nThis endpoint is currently being beta tested and subject to un-announced breaking changes.",
        "operationId": "CalculateNetOfOnCostsTools",
        "parameters": [
          {
            "name": "NotionalDayRate",
            "in": "query",
            "description": "The total chargeable rate per day.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "CalculationDate",
            "in": "query",
            "description": "Used to find associated legislative values, default Today.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Fee",
            "in": "query",
            "description": "The charge for providing this service, per pay period.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "FeeIsPercentage",
            "in": "query",
            "description": "If true, 'Fee' will be treated as a percentage.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ApprenticeshipLevyRateOverride",
            "in": "query",
            "description": "Override the Apprenticeship Levy Rate. 0.50 for 0.5%.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "EmployersPensionContribution",
            "in": "query",
            "description": "The employers pension contributions, per pay period.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "EmployersPensionContributionIsPercentage",
            "in": "query",
            "description": "If true, EmployersPensionContribution will be treated as a percentage.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "EmployeesPensionContribution",
            "in": "query",
            "description": "The employees pension contributions, per pay period.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "EmployeesPensionContributionIsPercentage",
            "in": "query",
            "description": "If true, EmployeesPensionContribution will be used as a percentage.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "UseAeBandings",
            "in": "query",
            "description": "If true, legislative Ae Bandings will be applied during calculation.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "HolidayWeeks",
            "in": "query",
            "description": "The holiday weeks to use for the calculation.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "DaysWorkedPerWeek",
            "in": "query",
            "description": "Number of days the employee works per week.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PayPeriod",
            "in": "query",
            "description": "The pay frequency to be used for the calculation.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PayPeriods"
            }
          },
          {
            "name": "PensionRule",
            "in": "query",
            "description": "The type of pension scheme being enrolled into, default SalarySacrifice.",
            "schema": {
              "$ref": "#/components/schemas/PensionRule"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.NetOfOnCostsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "403": {
            "description": "Forbidden"
          }
        }
      }
    },
    "/employers/{employerId}/webhooks": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "List Webhooks",
        "description": "Lists all Webhooks for an Employer.",
        "operationId": "IndexWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list Webhooks",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Webhook"
        ],
        "summary": "Create Webhook",
        "description": "Creates a new Webhook for the Employer.",
        "operationId": "CreateWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created"
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/webhooks/{id}": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "Get Webhook",
        "description": "Gets the Webhook specified.",
        "operationId": "GetWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Webhook belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Webhook"
        ],
        "summary": "Update Webhook",
        "description": "Updates a Webhook for the Employer.",
        "operationId": "UpdateWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Webhook"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "Webhook"
        ],
        "summary": "Delete Webhook",
        "description": "Deletes the specified Webhook.",
        "operationId": "DeleteWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/employers/{employerId}/webhooks/samples/{webhookEvent}": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "Sample Value",
        "description": "Returns an example of the data you can expect your end point to receive when a webhook is fired.",
        "operationId": "SampleWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the Webhook belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "webhookEvent",
            "in": "path",
            "description": "The WebhookEvent that you want a sample value for.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/WebhookEvent"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/webhooks/{id}/payloads": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "List WebhookPayloads",
        "description": "Returns a list of all WebhookPayloads for this webhook",
        "operationId": "PayloadsWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNum",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/webhooks/{id}/payloads/{payloadId}": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "Get WebhookPayload",
        "description": "Returns the specified WebhookPayload for this webhook",
        "operationId": "PayloadWebhook",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "payloadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookPayload"
                }
              }
            }
          }
        }
      }
    },
    "/employers/{employerId}/workingpatterns": {
      "get": {
        "tags": [
          "WorkingPattern"
        ],
        "summary": "List WorkingPatterns",
        "description": "Lists all WorkingPattern for the Employer specified.",
        "operationId": "IndexAsyncWorkingPattern",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer for which you want to list WorkingPattern",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Item"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "WorkingPattern"
        ],
        "summary": "Create WorkingPattern",
        "description": "Creates a new WorkingPattern for the Employer.",
        "operationId": "CreateWorkingPattern",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request"
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkingPattern"
                }
              }
            }
          },
          "404": {
            "description": "Employer Not Found"
          }
        }
      }
    },
    "/employers/{employerId}/workingpatterns/{id}": {
      "get": {
        "tags": [
          "WorkingPattern"
        ],
        "summary": "Get WorkingPattern",
        "description": "Gets the WorkingPattern specified.",
        "operationId": "GetAsyncWorkingPattern",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "description": "The Id of the Employer to which the WorkingPattern belongs.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The id of the WorkingPattern you want to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.WorkingPatternResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "put": {
        "tags": [
          "WorkingPattern"
        ],
        "summary": "Update WorkingPattern",
        "description": "Updates the details of an existing WorkingPattern.",
        "operationId": "UpdateWorkingPattern",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Contract.WorkingPatternRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contract.WorkingPatternResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        }
      },
      "delete": {
        "tags": [
          "WorkingPattern"
        ],
        "summary": "Delete WorkingPattern",
        "description": "Deletes the specified WorkingPattern.",
        "operationId": "DeleteWorkingPattern",
        "parameters": [
          {
            "name": "employerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Address": {
        "type": "object",
        "properties": {
          "line1": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "line2": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "line3": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "line4": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "line5": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "postCode": {
            "maxLength": 10,
            "type": "string",
            "nullable": true
          },
          "country": {
            "$ref": "#/components/schemas/Country"
          },
          "foreignCountry": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AdvancedVarianceReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdvancedVarianceReportLine"
            },
            "nullable": true
          },
          "payCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayCode"
            },
            "nullable": true
          },
          "primaryPeriodName": {
            "type": "string",
            "nullable": true
          },
          "secondaryPeriodName": {
            "type": "string",
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "AdvancedVarianceReportLine": {
        "type": "object",
        "properties": {
          "employeeCode": {
            "type": "string",
            "nullable": true
          },
          "employeeName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "costCentre": {
            "type": "string",
            "nullable": true
          },
          "primaryGrossTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryGrossTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "primaryGrossTaxable": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryGrossTaxable": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "primaryNetPay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryNetPay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "primaryTax": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryTax": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "primaryEmployeeNi": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryEmployeeNi": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "primaryEmployerNi": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryEmployerNi": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "primaryStudentOrPgLoan": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryStudentOrPgLoan": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "payCodeVarianceLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayCodeVarianceLine"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AdvancedVarianceReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/AdvancedVarianceReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "AeAction": {
        "enum": [
          "NoChange",
          "Enrol",
          "Exit",
          "Inconclusive",
          "Postpone",
          "ReEnrol",
          "AddToPension",
          "OptOut",
          "CeaseMembership"
        ],
        "type": "string"
      },
      "AeAssessment": {
        "type": "object",
        "properties": {
          "assessmentDate": {
            "type": "string",
            "format": "date-time"
          },
          "employeeState": {
            "$ref": "#/components/schemas/AeEmployeeState"
          },
          "age": {
            "type": "integer",
            "description": "[readonly] The age of the Employee at the time of the assessment",
            "format": "int32"
          },
          "ukWorker": {
            "$ref": "#/components/schemas/AeUKWorker"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "[readonly] The PaySchedule ordinal for the Employee at the time of the assessment",
            "format": "int32"
          },
          "earningsInPeriod": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "qualifyingEarningsInPeriod": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "aeExclusionCode": {
            "$ref": "#/components/schemas/AeExclusionCode"
          },
          "status": {
            "$ref": "#/components/schemas/AeStatus"
          },
          "reason": {
            "type": "string",
            "description": "[readonly] The reason for determining the Status given.",
            "nullable": true
          },
          "action": {
            "$ref": "#/components/schemas/AeAssessmentAction"
          },
          "startReportingType": {
            "$ref": "#/components/schemas/PensionReportingType"
          },
          "endReportingType": {
            "$ref": "#/components/schemas/PensionReportingType"
          },
          "startPayRunEntryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "endPayRunEntryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "payRunVersion": {
            "type": "integer",
            "description": "[readonly] The supplementary pay run version of this AeAssessment.",
            "format": "int32"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "As part of AutoEnrolment we assess your Employees to see if they need to be auto-enroled in a Pension.\r\nThis model shows the result of an assessment."
      },
      "AeAssessmentAction": {
        "type": "object",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/AeAction"
          },
          "employeeState": {
            "$ref": "#/components/schemas/AeEmployeeState"
          },
          "actionCompleted": {
            "type": "boolean",
            "description": "[readonly] Indicates whether or not the required action was successfully completed"
          },
          "actionCompletedMessage": {
            "type": "string",
            "description": "[readonly] Gives further information about the action taken or the reason if wasn't successfully completed",
            "nullable": true
          },
          "requiredLetter": {
            "$ref": "#/components/schemas/AeStatutoryLetter"
          },
          "pensionSchemeId": {
            "type": "string",
            "description": "[readonly] The PensionSchemeId that a completed action relates to",
            "format": "uuid"
          },
          "workerGroupId": {
            "type": "string",
            "description": "[readonly] The WorkerGroupId that a completed action relates to",
            "format": "uuid"
          },
          "letterNotYetSent": {
            "type": "boolean",
            "description": "[readonly] Indicates whether or not any required letter has been sent"
          }
        },
        "additionalProperties": false
      },
      "AeEmployee": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The employee unique id",
            "format": "uuid"
          },
          "birthDate": {
            "type": "string",
            "description": "The employees date of birth",
            "format": "date"
          },
          "age": {
            "type": "integer",
            "description": "The employees age at assessment",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "description": "The employees start date",
            "format": "date"
          },
          "leaveDate": {
            "type": "string",
            "description": "The employees leave date, if applicable",
            "format": "date",
            "nullable": true
          },
          "isExempt": {
            "type": "boolean",
            "description": "The employee is exempt"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AeRole"
            },
            "description": "The roles for the employee",
            "nullable": true
          },
          "pensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AePension"
            },
            "description": "The pensions for the employee",
            "nullable": true
          },
          "statePensionAge": {
            "type": "integer",
            "description": "The state pension age date for the employee",
            "format": "int32"
          },
          "postponementDate": {
            "type": "string",
            "description": "The postponement date for the employee, if applicable",
            "format": "date",
            "nullable": true
          },
          "defaultPensionSchemeId": {
            "type": "string",
            "description": "The default pension scheme for the employee, if applicable",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupId": {
            "type": "string",
            "description": "The default worker group for the employee, if applicable",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AeEmployeeAssessment": {
        "type": "object",
        "properties": {
          "assessmentDate": {
            "type": "string",
            "description": "The date of the assessment",
            "format": "date"
          },
          "age": {
            "type": "integer",
            "description": "The age of the employee at assessment",
            "format": "int32"
          },
          "ukWorker": {
            "$ref": "#/components/schemas/AeUKWorker"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "earnings": {
            "type": "number",
            "description": "The earnings used for the assessment",
            "format": "double"
          },
          "roles": {
            "type": "string",
            "description": "The roles associated with the assessment",
            "nullable": true
          },
          "action": {
            "$ref": "#/components/schemas/AeAction"
          }
        },
        "additionalProperties": false
      },
      "AeEmployeeState": {
        "enum": [
          "Automatic",
          "OptOut",
          "OptIn",
          "VoluntaryJoiner",
          "ContractualPension",
          "CeasedMembership",
          "Leaver",
          "Excluded",
          "Enrol"
        ],
        "type": "string"
      },
      "AeExclusionCode": {
        "enum": [
          "NotKnown",
          "NotAWorker",
          "NotWorkingInUk",
          "NoOrdinarilyWorkingInUk",
          "OutsideOfAgeRange",
          "SingleEmployee",
          "CeasedActiveMembershipInPast12Mo",
          "CeasedActiveMembership",
          "ReceivedWulsInPast12Mo",
          "ReceivedWuls",
          "Leaving",
          "TaxProtection",
          "CisSubContractor"
        ],
        "type": "string"
      },
      "AeLetter": {
        "enum": [
          "Entitled",
          "NonEligible",
          "Postponed",
          "Enrolled",
          "Reenrolled"
        ],
        "type": "string"
      },
      "AeLetterSentType": {
        "enum": [
          "Email",
          "Manual",
          "ExternalDataProvider"
        ],
        "type": "string"
      },
      "AePension": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The pension unique id",
            "format": "uuid"
          },
          "pensionSchemeId": {
            "type": "string",
            "description": "The pension scheme unique id",
            "format": "uuid"
          },
          "workerGroupId": {
            "type": "string",
            "description": "The worker group unique id",
            "format": "uuid"
          },
          "roleIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The role unique ids associated with the pension",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "The start date of the pension",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the pension, if applicable",
            "format": "date",
            "nullable": true
          },
          "endReason": {
            "$ref": "#/components/schemas/PensionEndReason"
          },
          "revertedRoleIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The role unique ids associated with the pension which need to be removed",
            "nullable": true
          },
          "isNew": {
            "type": "boolean",
            "description": "If the pension is created this period by Ae"
          }
        },
        "additionalProperties": false
      },
      "AePensionScheme": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The pension scheme unique id",
            "format": "uuid"
          },
          "isDefaultScheme": {
            "type": "boolean",
            "description": "If the pension scheme is the default scheme for the Employer"
          },
          "isQualifying": {
            "type": "boolean",
            "description": "If the pension scheme is qualifying for AE"
          },
          "disableLetters": {
            "type": "boolean",
            "description": "If the pension schemes letters are managed by an external provider"
          },
          "useSerRule": {
            "type": "boolean",
            "description": "If the roles within the pension scheme are assessed jointly"
          },
          "initialEnrolmentType": {
            "$ref": "#/components/schemas/PensionInitialEnrolmentType"
          },
          "workerGroupIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The worker group unique ids associated with the pension",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AePeriod": {
        "type": "object",
        "properties": {
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "payDate": {
            "type": "string",
            "description": "The pay date of the period",
            "format": "date"
          },
          "startDate": {
            "type": "string",
            "description": "The start date of the period",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the period",
            "format": "date"
          },
          "payRunStartDate": {
            "type": "string",
            "description": "The start date of the pay run",
            "format": "date"
          },
          "payRunEndDate": {
            "type": "string",
            "description": "The end date of the pay run",
            "format": "date"
          },
          "lowerEarningsThreshold": {
            "type": "number",
            "description": "The lower earnings threshold for the period",
            "format": "double"
          },
          "qualifyingThreshold": {
            "type": "number",
            "description": "The qualifying threshold for the period",
            "format": "double"
          },
          "upperEarningsThreshold": {
            "type": "number",
            "description": "The upper earnings threshold for the period",
            "format": "double"
          },
          "minimumAge": {
            "type": "integer",
            "description": "The minimum age to assess in the period",
            "format": "int32"
          },
          "deferalPeriodType": {
            "$ref": "#/components/schemas/DeferalPeriodType"
          },
          "deferalPeriods": {
            "type": "integer",
            "description": "The number of deferal periods",
            "format": "int32"
          },
          "enrolmentDeferalPeriodType": {
            "$ref": "#/components/schemas/DeferalPeriodType"
          },
          "enrolmentDeferalPeriods": {
            "type": "integer",
            "description": "The number of deferal periods for enrolment",
            "format": "int32"
          },
          "cyclicalReenrolmentDate": {
            "type": "string",
            "description": "The cyclical reenrolment date",
            "format": "date"
          },
          "cyclicalReenrolmentIsDue": {
            "type": "boolean",
            "description": "If cyclical reenrolment is due in this period",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "AeReason": {
        "enum": [
          "NoEmployee",
          "NoPeriod",
          "NoDefaultPension",
          "NoSer",
          "IsExempt",
          "IsPostponed",
          "NonEligibleAge",
          "PayBelowLowerEarningsThreshold",
          "PayBelowQualifyingThreshold",
          "HasQualifyingPension",
          "HasOptedOut",
          "IsLeaver",
          "HasCeasedMembership",
          "Contractual",
          "IsEntitled",
          "IsEligible",
          "HasExistingSerPension"
        ],
        "type": "string"
      },
      "AeRole": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The role unique id",
            "format": "uuid"
          },
          "startDate": {
            "type": "string",
            "description": "The start date of the role",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the role, if applicable",
            "format": "date",
            "nullable": true
          },
          "earnings": {
            "type": "number",
            "description": "The role earnings",
            "format": "double"
          },
          "defaultPensionSchemeId": {
            "type": "string",
            "description": "The default pension scheme for the role, if applicable",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupId": {
            "type": "string",
            "description": "The default worker group for the role, if applicable",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AeStatus": {
        "enum": [
          "Eligible",
          "NonEligible",
          "Entitled",
          "NoDuties"
        ],
        "type": "string"
      },
      "AeStatutoryLetter": {
        "enum": [
          "B1",
          "B2",
          "B3",
          "B4"
        ],
        "type": "string"
      },
      "AeUKWorker": {
        "enum": [
          "No",
          "Yes",
          "Ordinarily"
        ],
        "type": "string"
      },
      "AllowanceType": {
        "enum": [
          "Fixed",
          "Variable",
          "Range",
          "Graded"
        ],
        "type": "string"
      },
      "AnalysisCategory": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "The unique Analysis Category Name"
          }
        },
        "additionalProperties": false
      },
      "AnalysisCategoryCode": {
        "required": [
          "code",
          "title"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "title": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The name of this Analysis Code"
          },
          "color": {
            "maxLength": 6,
            "type": "string",
            "description": "A color to used to represent this Analysis Code, in hex format. ie 'ff0000'",
            "nullable": true
          },
          "accountingCode": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AnalysisCategoryCodes": {
        "type": "object",
        "properties": {
          "analysisCategory": {
            "type": "string",
            "description": "AnalysisCategory Model",
            "nullable": true
          },
          "analysisCategoryCode": {
            "type": "string",
            "description": "AnalysisCategoryCode Model",
            "nullable": true
          },
          "analysisCategoryId": {
            "type": "string",
            "description": "AnalysisCategory Identifier",
            "format": "uuid",
            "nullable": true
          },
          "analysisCategoryCodeId": {
            "type": "string",
            "description": "AnalysisCategoryCode Identifier",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AnalysisCategoryIndex": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "index": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "AnalysisReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisReportLine"
            },
            "nullable": true
          },
          "payCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayCode"
            },
            "nullable": true
          },
          "showPayPeriodBreakdown": {
            "type": "boolean"
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "AnalysisReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "taxYear": {
            "type": "string",
            "nullable": true
          },
          "payPeriod": {
            "type": "integer",
            "format": "int32"
          },
          "gross": {
            "type": "number",
            "format": "double"
          },
          "niableGross": {
            "type": "number",
            "format": "double"
          },
          "pensionableGross": {
            "type": "number",
            "format": "double"
          },
          "net": {
            "type": "number",
            "format": "double"
          },
          "takeHome": {
            "type": "number",
            "format": "double"
          },
          "employerNic": {
            "type": "number",
            "format": "double"
          },
          "employerPension": {
            "type": "number",
            "format": "double"
          },
          "showQtyColumn": {
            "type": "boolean"
          },
          "niSaving": {
            "type": "number",
            "format": "double"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisReportLineValue"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AnalysisReportLineValue": {
        "type": "object",
        "properties": {
          "qty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "AnalysisReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/AnalysisReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "AnnualRoundingRule": {
        "enum": [
          "RoundOff",
          "Exact",
          "RoundUp",
          "RoundDown"
        ],
        "type": "string"
      },
      "AssumedPensionablePay": {
        "enum": [
          "AssumedPensionablePay",
          "NormalPay",
          "HigherOfTheTwo"
        ],
        "type": "string"
      },
      "AttachmentOrder": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/AttachmentOrderType"
          },
          "carryForwardShortfall": {
            "type": "boolean",
            "description": "[ReadOnly] Whether or not shortfalls should be carried forward",
            "readOnly": true
          },
          "allowProtectedEarnings": {
            "type": "boolean",
            "description": "[ReadOnly] Whether or not shortfalls should be carried forward",
            "readOnly": true
          },
          "autoDeduction": {
            "type": "boolean",
            "description": "[readonly] Whether or not the amount to be deducted is automatically calculated",
            "readOnly": true
          },
          "reference": {
            "maxLength": 100,
            "type": "string",
            "description": "The reference which appeared on the court paperwork",
            "nullable": true
          },
          "issueDate": {
            "type": "string",
            "description": "The date of issue for this Order",
            "format": "date"
          },
          "applyFrom": {
            "type": "string",
            "description": "The date from which to apply this Order",
            "format": "date"
          },
          "applyUntil": {
            "type": "string",
            "description": "An optional date on which to stop applying this order",
            "format": "date",
            "nullable": true
          },
          "deductionIsPercentage": {
            "type": "boolean",
            "description": "Whether or not the amount given for Deduction is a percentage rather than a fixed amount"
          },
          "deduction": {
            "type": "number",
            "description": "The percentage or amount (depending on DeductionIsPercentage) to deduct",
            "format": "double"
          },
          "protectedEarningsIsPercentage": {
            "type": "boolean",
            "description": "Whether or not the amount for ProtectedEarnings is a percentage rather than a fixed amount."
          },
          "protectedEarnings": {
            "type": "number",
            "description": "The percentage or amount or percentage (depending on ProtectedEarningsIsPercentage) to protect",
            "format": "double"
          },
          "chargeAdminFee": {
            "type": "boolean",
            "description": "Whether or not a £1 admin fee should be deducted for this order"
          },
          "shortfall": {
            "type": "number",
            "description": "Any shortfall that is being carried forward",
            "format": "double"
          },
          "stopWhenTotalPaid": {
            "type": "boolean",
            "description": "Whether or not this order should be stopped once a total amount has been paid"
          },
          "totalAmountToPay": {
            "type": "number",
            "description": "The Total amount that needs to be paid for this Order",
            "format": "double"
          },
          "amountPreviouslyPaid": {
            "type": "number",
            "description": "Any amount that has previously been paid towards this Order",
            "format": "double"
          },
          "stopped": {
            "type": "boolean",
            "description": "[readonly] Whether or not this Order has been stopped.\r\nThis is set automatically when either it's paid in full or the ApplyUntil date has been reached."
          },
          "notes": {
            "maxLength": 300,
            "type": "string",
            "description": "A free-form text field to record any comments",
            "nullable": true
          },
          "includeBankDetails": {
            "type": "boolean"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/BankDetails"
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttachmentOrderPayment"
            },
            "description": "[readonly] Payments made towards this order. Only populated when viewed as a report.",
            "nullable": true
          },
          "payee": {
            "type": "string",
            "description": "The Id of the Payee, if any, that deductions are to be paid to.",
            "format": "uuid",
            "nullable": true
          },
          "payeeName": {
            "type": "string",
            "description": "The name of the Payee, if any, that deductions are to be paid to.",
            "nullable": true
          },
          "documentCount": {
            "type": "integer",
            "description": "[readonly] The number of attachments associated with this model",
            "format": "int32"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] The attachments associated with this model",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent an Attachment of Earnings Order (AEO)"
      },
      "AttachmentOrderPayment": {
        "type": "object",
        "properties": {
          "attachmentOrder": {
            "$ref": "#/components/schemas/Item"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "date": {
            "type": "string",
            "description": "[readonly] The date this deduction was made",
            "format": "date"
          },
          "description": {
            "type": "string",
            "description": "[readonly] Description of deduction, usually the reference from the AttachmentOrder",
            "nullable": true
          },
          "attachablePay": {
            "type": "number",
            "description": "[readonly] The total Attachable pay for the Employee on this PayRun",
            "format": "double"
          },
          "protectedPay": {
            "type": "number",
            "description": "[readonly] The amount of the Attachable Pay that must be protected",
            "format": "double"
          },
          "otherAttachmentOrderDeductions": {
            "type": "number",
            "description": "[readonly] Deductions made on this PayRun for this employee due to  other higher priority AttachmentOrders",
            "format": "double"
          },
          "desiredDeduction": {
            "type": "number",
            "description": "[readonly] The amount that should be deducted, if arrestable pay is available.\r\nNot including any shortfall",
            "format": "double"
          },
          "shortfall": {
            "type": "number",
            "description": "[readonly] Any shortfall (ie arrears) that existed before this PayRun.",
            "format": "double"
          },
          "totalPaid": {
            "type": "number",
            "description": "[readonly] Total amount paid to date, including this deduction.",
            "format": "double"
          },
          "resultingDeduction": {
            "type": "number",
            "description": "[readonly] The actual amount deducted",
            "format": "double"
          },
          "resultingShortfall": {
            "type": "number",
            "description": "[readonly] The resulting shortfall (including any shortfall from previous periods",
            "format": "double"
          },
          "adminFee": {
            "type": "number",
            "description": "[readonly] Any admin fee charged",
            "format": "double"
          },
          "payRunVersion": {
            "type": "integer",
            "description": "[readonly] The supplementary pay run version of this AttachmentOrderPayment.",
            "format": "int32"
          },
          "isLatestVersion": {
            "type": "boolean",
            "description": "[readonly] Indicates whether this is the latest version of the AttachmentOrderPayment."
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent a payment towards an Attachment of Earnings Order (AEO)"
      },
      "AttachmentOrderReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/AttachmentOrder"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "AttachmentOrderType": {
        "enum": [
          "AeoP",
          "Aeo",
          "Csa",
          "Csa2012",
          "Deo",
          "AeoNp",
          "CcPre92",
          "CcPost92",
          "Ctaeo",
          "Mcaeo",
          "Ea",
          "Cma",
          "Cao",
          "Isd",
          "Ea2006",
          "Caps",
          "Dea",
          "DeaHigher",
          "DeaFixed",
          "CtaeoWales"
        ],
        "type": "string"
      },
      "AttachmentOrdersReport": {
        "type": "object",
        "properties": {
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "AttachmentOrdersReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/AttachmentOrdersReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "AuditEventAction": {
        "enum": [
          "Added",
          "Edited",
          "Deleted"
        ],
        "type": "string"
      },
      "AuthScheme": {
        "enum": [
          "OAuth1",
          "OAuth2",
          "Basic",
          "ApiKeyInHeader",
          "Hmac",
          "OAuth2Cc",
          "OAuth2Password",
          "DeferToThirdParty"
        ],
        "type": "string"
      },
      "AutoEnrolment": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/AeEmployeeState"
          },
          "stateDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "ukWorker": {
            "$ref": "#/components/schemas/AeUKWorker"
          },
          "daysToDeferAssessment": {
            "type": "integer",
            "description": "The number of days, if any, to defer assessment of this employee.\r\nYou're allowed to defer assessment of new employees by up to 3 months.",
            "format": "int32"
          },
          "postponementDate": {
            "type": "string",
            "description": "[readonly] If a value is present, then employee wont be enrolled on an AE Pension until after this date.\r\nThis is automatically set to a date if the employee is deemed to be an EligibleJobHolder, but the employer has set a Postponement period and this value is currently null\r\nThis is automatically set to null if it already has a value and the employee is deemed NOT to be an EligibleJobHolder - ie, they previously qualified but now do not.",
            "format": "date",
            "nullable": true
          },
          "deferByMonthsNotDays": {
            "type": "boolean",
            "description": "If set to true then the value in DaysToDeferAssessment will be treated as a number of months, not a number of days"
          },
          "exempt": {
            "type": "boolean"
          },
          "aeExclusionCode": {
            "$ref": "#/components/schemas/AeExclusionCode"
          },
          "aePostponementLetterSent": {
            "type": "boolean"
          },
          "lastAssessment": {
            "$ref": "#/components/schemas/AeAssessment"
          }
        },
        "additionalProperties": false
      },
      "AutoPilotFinaliseTime": {
        "enum": [
          "JustAfterMidnight",
          "NineAm",
          "OnePm",
          "FourPm",
          "SixPm",
          "ElevenPm"
        ],
        "type": "string"
      },
      "AutomationSettings": {
        "type": "object",
        "properties": {
          "enableAutoPilot": {
            "type": "boolean",
            "description": "IF enabled then payruns will be automatically finalised on the payment date and the next payrun will be started"
          },
          "autoPilotTime": {
            "$ref": "#/components/schemas/AutoPilotFinaliseTime"
          },
          "autoPilotOffset": {
            "maximum": 6,
            "minimum": 0,
            "type": "integer",
            "description": "How many days before the payment date a payrun should be finalised.\r\nSet it to 0 if you want the payrun to be automatically finalised on the payment date itself",
            "format": "int32"
          },
          "enableAutoOpen": {
            "type": "boolean",
            "description": "IF enabled then whenever you close a payrun, the next one will be started. Automatically set to true if EnableAutoPilot is true"
          },
          "autoSubmitFps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your FPS to HMRC whenever you finalise a PayRun.\r\nThis property will always have the same value as the property with the same name on the RtiSubmissionSettings model."
          },
          "autoSubmitPayments": {
            "type": "boolean",
            "description": "If set to true, we'll automatically submit payments whenever you finalise a PayRun.\r\nThe employer must be connected to an ExternalDataProvider supporting Type of 'Payments'."
          },
          "autoSubmitJournal": {
            "type": "boolean",
            "description": "If set to true, we'll automatically submit the payroll journal whenever you finalise a PayRun.\r\nThe employer must be connected to an ExternalDataProvider supporting Type of 'Accounting'."
          },
          "autoSubmitPayments_Employee": {
            "type": "boolean",
            "description": "Used in conjunction with AutoSubmitPayments."
          },
          "autoSubmitPayslips": {
            "type": "boolean",
            "description": "If set to true, we'll automatically submit payslips whenever you finalise a PayRun.\r\nThe employer must be connected to an ExternalDataProvider supporting Type of 'EmployeePortal'."
          },
          "autoSubmitP45s": {
            "type": "boolean",
            "description": "If set to true, we'll automatically submit P45s whenever you finalise a PayRun.\r\nThe employer must be connected to an ExternalDataProvider supporting Type of 'EmployeePortal'."
          },
          "autoSubmitPayments_Hmrc": {
            "type": "boolean",
            "description": "Used in conjunction with AutoSubmitPayments."
          },
          "autoSubmitPayments_Deductions": {
            "type": "boolean",
            "description": "Used in conjunction with AutoSubmitPayments."
          },
          "autoSubmitPayments_Aeos": {
            "type": "boolean",
            "description": "Used in conjunction with AutoSubmitPayments."
          },
          "autoSubmitPayments_Pensions": {
            "type": "boolean",
            "description": "Used in conjunction with AutoSubmitPayments."
          },
          "payslipReleaseType": {
            "$ref": "#/components/schemas/PayslipReleaseType"
          },
          "autoSubmitPayslips_DaysBeforePayday": {
            "$ref": "#/components/schemas/DaysBeforePayday"
          },
          "autoSubmitPayslips_PaymentDateRule": {
            "$ref": "#/components/schemas/PayslipReleasePaymentDateRule"
          },
          "autoSubmitPayslips_PayslipReleaseTime": {
            "$ref": "#/components/schemas/PayslipReleaseTime"
          },
          "employeesWithoutEmailAddress": {
            "type": "integer",
            "description": "[readonly] A count of how many employees or subcontractors for this employer do not have email addresses",
            "format": "int32"
          },
          "employeesWithEmailAddressButNotAutoSending": {
            "type": "integer",
            "description": "[readonly] A count of how many employees or subcontractors for this employer do have email addresses but don't have the option enabled to auto-email payslips",
            "format": "int32"
          },
          "subcontractorsNotAutoSendingStatement": {
            "type": "integer",
            "description": "[readonly] A count of how many subscontractors for this employer do don't have the option enabled to auto-email statement",
            "format": "int32"
          },
          "codingNoticesAutomaticallyApplied": {
            "type": "boolean",
            "description": "[readonly] An indicator of whether or not this employer is automatically applying DpsNotices"
          },
          "payrunEmails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrunEmail"
            },
            "description": "Automated emails that will be sent when a PayRun is finalised",
            "nullable": true
          },
          "autoSubmitPensionLetters": {
            "type": "boolean",
            "description": "If set to true, we'll automatically submit Pension Letters whenever you finalise a PayRun.\r\nThe employer must be connected to an ExternalDataProvider supporting Type of 'EmployeePortal'."
          },
          "autoSubmitEps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your EPS to HMRC whenever you finalise a PayRun."
          }
        },
        "additionalProperties": false,
        "description": "Configures various automation settings for an Employer"
      },
      "AverageHolidayPayRateReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AverageHolidayPayRateReportLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "AverageHolidayPayRateReportLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "description": "Payroll code of the employee",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The First Name of the employee",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The Last Name of the employee",
            "nullable": true
          },
          "niNumber": {
            "type": "string",
            "description": "The NiNumber of the employee",
            "nullable": true
          },
          "period": {
            "type": "integer",
            "description": "The Period of the average holiday pay rate",
            "format": "int32"
          },
          "rate": {
            "type": "number",
            "description": "The Average holiday pay rate",
            "format": "double"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AverageHolidayPayRateReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/AverageHolidayPayRateReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "AveragePayGradesReportLine": {
        "type": "object",
        "properties": {
          "effectiveDate": {
            "type": "string",
            "description": "Effective date for Pay spine grade",
            "format": "date"
          },
          "paySpineName": {
            "type": "string",
            "description": "Name of Pay Spine",
            "nullable": true
          },
          "payGradeName": {
            "type": "string",
            "description": "Name of Pay grade name",
            "nullable": true
          },
          "lowerGradePoint": {
            "type": "string",
            "description": "Lower grade point of pay spine grade",
            "nullable": true
          },
          "upperGradePoint": {
            "type": "string",
            "description": "Upper grade point of pay spine grade",
            "nullable": true
          },
          "upperPointAltMax": {
            "type": "boolean",
            "description": "To Check Alt Max of Upper point"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AverageWeeklyEarnings": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/AverageWeeklyEarningsResult"
          },
          "resultDescription": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "averageEarnings": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "threshold": {
            "type": "number",
            "format": "double"
          },
          "eligibilityThreshold": {
            "type": "number",
            "format": "double"
          },
          "requestedDate": {
            "type": "string",
            "format": "date"
          },
          "relevantPeriodStart": {
            "type": "string",
            "format": "date"
          },
          "relevantPeriodEnd": {
            "type": "string",
            "format": "date"
          },
          "relevantPeriodWeekCount": {
            "type": "number",
            "format": "double"
          },
          "relevantPeriodEarnings": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "AverageWeeklyEarningsResult": {
        "enum": [
          "Success",
          "EarningsBelowThreshold",
          "NotEnoughPayrollData",
          "TaxYearNotSupported",
          "TwoRelatedSchemes",
          "NeonatalCareDateMissing"
        ],
        "type": "string"
      },
      "BackgroundTaskStatus": {
        "enum": [
          "Queued",
          "Sent",
          "Failed",
          "Processing"
        ],
        "type": "string"
      },
      "BankDetails": {
        "type": "object",
        "properties": {
          "bankName": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "bankBranch": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "bankReference": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "accountName": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "pattern": "^\\d{8}$",
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "pattern": "^(\\d{6}|\\d{2}-\\d{2}-\\d{2}|\\d{2} \\d{2} \\d{2})$",
            "type": "string",
            "nullable": true
          },
          "note": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "buildingSocietyRollNumber": {
            "maxLength": 18,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9\\s\\/\\.-]+$",
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BankHolidayCollection": {
        "enum": [
          "None",
          "EnglandAndWales",
          "Scotland",
          "NorthernIreland"
        ],
        "type": "string"
      },
      "BankPaymentInstruction": {
        "type": "object",
        "properties": {
          "originator": {
            "$ref": "#/components/schemas/BankDetails"
          },
          "bankPayments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayRunPayment"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "statusMessage": {
            "type": "string",
            "description": "[readonly] A message to elaborate on the Status",
            "nullable": true
          },
          "link": {
            "type": "string",
            "description": "[readonly] If available, a link to the payments in an ExternalDataProvider",
            "nullable": true
          },
          "serviceUserNumber": {
            "type": "string",
            "description": "Service user number to be used while sending payment instruction",
            "nullable": true
          },
          "bureauNumber": {
            "type": "string",
            "description": "Bureau number to be used if available while sending payment instruction",
            "nullable": true
          },
          "allowsMultiDate": {
            "type": "boolean",
            "description": "Allows multiple payment dates in the file"
          }
        },
        "additionalProperties": false
      },
      "BankPaymentInstructionReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/BankPaymentInstruction"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "BankPaymentInstructionsCsvFormat": {
        "enum": [
          "StandardCsv",
          "Telleroo",
          "BarclaysBacs",
          "SantanderBacs",
          "Sif",
          "Revolut",
          "Standard18FasterPayments",
          "Standard18Bacs",
          "Bankline",
          "BanklineBulk",
          "StandardCsvBacs",
          "LloydsMultipleStandardCsvBacs",
          "LloydsV11CsvBacs",
          "CoOpBulkCsvBacs",
          "CoOpFasterPaymentsCsv",
          "BankOfAmericaBacs",
          "DanskeBankUkLocalPayments",
          "DanskeBankUkFasterPayments",
          "Standard18BacsMulti",
          "BanklineBulkListDebit",
          "VirginMoney",
          "JpMorganAch",
          "MetrobankCsv",
          "CitibankUkAch",
          "CitibankFasterPayments",
          "IngBacs"
        ],
        "type": "string"
      },
      "Benefit": {
        "type": "object",
        "properties": {
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "type": {
            "$ref": "#/components/schemas/BenefitType"
          },
          "declarationType": {
            "$ref": "#/components/schemas/BenefitDeclarationType"
          },
          "benefitPayrolled": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BenefitPayrolled"
            },
            "nullable": true
          },
          "description": {
            "maxLength": 120,
            "type": "string",
            "description": "A description of this benefit",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "double"
          },
          "employeeContribution": {
            "type": "number",
            "format": "double"
          },
          "startDate": {
            "type": "string",
            "description": "The date the benefits starts if different to the start date of the TaxYear",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The date the benefits ends if different to the end date of the TaxYear",
            "format": "date",
            "nullable": true
          },
          "useProRata": {
            "type": "boolean",
            "description": "Benefit calculation should be done on pro rata rules"
          },
          "cashEquivalent": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "readOnly": true
          },
          "assetType": {
            "$ref": "#/components/schemas/BenefitDetailsAssetType"
          },
          "useOfAssetType": {
            "$ref": "#/components/schemas/BenefitDetailsUseOfAssetType"
          },
          "class1AType": {
            "$ref": "#/components/schemas/BenefitDetailsClass1AType"
          },
          "nonClass1AType": {
            "$ref": "#/components/schemas/BenefitDetailsNonClass1AType"
          },
          "paymentType": {
            "$ref": "#/components/schemas/BenefitDetailsPaymentType"
          },
          "tradingOrganisation": {
            "type": "boolean",
            "description": "Only relevant to Benefits with Type Entertainment"
          },
          "cashEquivalentFuel": {
            "type": "number",
            "description": "Only relevant to Benefits with Type Vans",
            "format": "double"
          },
          "loan": {
            "$ref": "#/components/schemas/BenefitDetailsLoan"
          },
          "car": {
            "$ref": "#/components/schemas/BenefitDetailsCar"
          },
          "openingBalance": {
            "type": "number",
            "description": "The amount of benefit paid YTD when setting up a benefit",
            "format": "double"
          },
          "paid": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "readOnly": true
          },
          "bikOutstanding": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "readOnly": true
          },
          "isPeriodValue": {
            "type": "boolean",
            "description": "To be used for the benefit period"
          },
          "overrideOpeningBalance": {
            "type": "boolean",
            "description": "To be used to change the opening balance if the benefit has been payrolled"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent Benefits and Expenses"
      },
      "BenefitDeclarationType": {
        "enum": [
          "P11D",
          "Paye"
        ],
        "type": "string"
      },
      "BenefitDetailsAssetType": {
        "enum": [
          "Other",
          "Multiple",
          "Property",
          "Cars",
          "PreciousMetals"
        ],
        "type": "string"
      },
      "BenefitDetailsCar": {
        "type": "object",
        "properties": {
          "makeAndModel": {
            "type": "string",
            "nullable": true
          },
          "registration": {
            "type": "string",
            "nullable": true
          },
          "firstRegistered": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "hasApprovedEmissionsValue": {
            "type": "boolean"
          },
          "co2Emissions": {
            "type": "integer",
            "format": "int32"
          },
          "engineSize": {
            "type": "integer",
            "format": "int32"
          },
          "zeroEmissionsMileage": {
            "type": "integer",
            "format": "int32"
          },
          "fuelType": {
            "$ref": "#/components/schemas/BenefitDetailsCarPowerType"
          },
          "availableFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "availableTo": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "daysUnavailable": {
            "type": "integer",
            "format": "int32"
          },
          "listPrice": {
            "type": "number",
            "format": "double"
          },
          "nonStandardAccessories": {
            "type": "number",
            "format": "double"
          },
          "employeeCapitalContributions": {
            "type": "number",
            "format": "double"
          },
          "employeePrivateContributions": {
            "type": "number",
            "format": "double"
          },
          "freeFuel": {
            "type": "boolean"
          },
          "fuelAvailableFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "fuelAvailableTo": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "freeFuelReinstated": {
            "type": "boolean"
          },
          "registeredPriorTo1998": {
            "type": "boolean",
            "description": "[readonly]",
            "readOnly": true
          },
          "rate": {
            "type": "number",
            "description": "[readonly] The applicable rate based on CO2Emissions and Engine Size",
            "format": "double"
          },
          "chargeableValue": {
            "type": "number",
            "description": "[readonly] The chargeable value of the car",
            "format": "double",
            "readOnly": true
          },
          "fullYearCharge": {
            "type": "number",
            "description": "[readonly] The charge for the car for a full year, not taking in to account available dates or EmployeePrivateContributions",
            "format": "double",
            "readOnly": true
          },
          "cashEquivalent": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "cashEquivalentFuel": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "BenefitDetailsCarPowerType": {
        "enum": [
          "Diesel6d",
          "DieselNon6d",
          "Petrol",
          "Hybrid",
          "Electric"
        ],
        "type": "string"
      },
      "BenefitDetailsClass1AType": {
        "enum": [
          "Other",
          "Multiple",
          "StopLossCharges",
          "NonQualifyingRelocationBenefit",
          "EducationalAssitance",
          "SubscriptionsAndFees"
        ],
        "type": "string"
      },
      "BenefitDetailsLoan": {
        "type": "object",
        "properties": {
          "numberOfJointBorrowers": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "loanMade": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "loanDischarged": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "startingBalance": {
            "type": "number",
            "format": "double"
          },
          "closingBalance": {
            "type": "number",
            "format": "double"
          },
          "maxBalanceInYear": {
            "type": "number",
            "format": "double"
          },
          "interestPaid": {
            "type": "number",
            "format": "double"
          },
          "cashEquivalent": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "readOnly": true
          },
          "fullTaxMonths": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "monthlyValue": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "officialInterest": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "BenefitDetailsNonClass1AType": {
        "enum": [
          "Other",
          "Multiple",
          "LoansWrittenOrWaived",
          "NurseryPlaces",
          "EducationalAssitance",
          "SubscriptionsAndFees"
        ],
        "type": "string"
      },
      "BenefitDetailsPaymentType": {
        "enum": [
          "Other",
          "SeasonTickets",
          "PrivateCarExpenses",
          "PrivateEducation",
          "AccountancyFees",
          "DomesticBills",
          "Multiple"
        ],
        "type": "string"
      },
      "BenefitDetailsUseOfAssetType": {
        "enum": [
          "Other",
          "Multiple",
          "CorporateHospitality",
          "Boat",
          "Aircraft",
          "TimeshareAccommodation",
          "HolidayAccommodation"
        ],
        "type": "string"
      },
      "BenefitPayrolled": {
        "type": "object",
        "properties": {
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "payRunVersion": {
            "type": "integer",
            "description": "[readonly] The supplementary pay run version of this BenefitPayrolled.",
            "format": "int32"
          },
          "isLatestVersion": {
            "type": "boolean",
            "description": "[readonly] Indicates whether this is the latest version of the BenefitPayrolled."
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "BenefitType": {
        "enum": [
          "AssetsTransferred",
          "PaymentsOnBehalf",
          "UnborneTax",
          "Vouchers",
          "Accommodation",
          "MileageAllowance",
          "Car",
          "Vans",
          "Loan",
          "Medical",
          "QualifyingRelocationExpenses",
          "Services",
          "AssetsAtEmployeeDisposal",
          "OtherClass1AItems",
          "OtherNonClass1AItems",
          "DirectorTax",
          "TravellingAndSubsistence",
          "Entertainment",
          "HomeTelephone",
          "NonQualifyingRelocationExpenses",
          "OtherExpenses"
        ],
        "type": "string"
      },
      "BureauSettings": {
        "type": "object",
        "properties": {
          "enableApprovals": {
            "type": "boolean",
            "description": "Whether or not Payruns for this employer need to go through an Approval process"
          },
          "processorUserId": {
            "type": "string",
            "description": "The Id of the user, if any, that is the allocated Processor",
            "format": "uuid",
            "nullable": true
          },
          "reportPackId": {
            "type": "string",
            "description": "The Id of the ReportPack, if any, to present to the Payroll Client",
            "format": "uuid",
            "nullable": true
          },
          "isBacsClient": {
            "type": "boolean",
            "description": "Indicates that the bureau is responsible for BACS payments of net wages to employees"
          },
          "isBacsClientForHmrc": {
            "type": "boolean",
            "description": "Indicates that the bureau is responsible for BACS payments of HMRC liabilites"
          },
          "showContactCard": {
            "type": "boolean",
            "description": "Show a Contact card with the Processors details  on the PayrollClient dashboard"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the BureauSettings for an Employer."
      },
      "CISSubContractorType": {
        "enum": [
          "SoleTrader",
          "Partnership",
          "Company",
          "Trust"
        ],
        "type": "string"
      },
      "CISTaxStatus": {
        "enum": [
          "Gross",
          "NetOfStandardDeduction",
          "NetOfHigherDeduction"
        ],
        "type": "string"
      },
      "CalendarEntry": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date"
          },
          "end": {
            "type": "string",
            "format": "date"
          },
          "type": {
            "$ref": "#/components/schemas/CalendarEntryType"
          }
        },
        "additionalProperties": false
      },
      "CalendarEntryType": {
        "enum": [
          "EmployeeStarting",
          "EmployeeLeaving",
          "EmployeeAbsence",
          "PayDay",
          "EmployeeBirthday",
          "EmployeeWorkAnniversary"
        ],
        "type": "string"
      },
      "CalendarMonth": {
        "enum": [
          "None",
          "January",
          "February",
          "March",
          "April",
          "May",
          "June",
          "July",
          "August",
          "September",
          "October",
          "November",
          "December"
        ],
        "type": "string"
      },
      "CarCharge": {
        "type": "object",
        "properties": {
          "dieselSurcharge": {
            "type": "number",
            "format": "double"
          },
          "maxCharge": {
            "type": "number",
            "format": "double"
          },
          "minCharge": {
            "type": "number",
            "format": "double"
          },
          "fuelCharge": {
            "type": "number",
            "format": "double"
          },
          "newCarRateReductionDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "newCarRateReductionAmount": {
            "type": "number",
            "format": "double"
          },
          "co2Table": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CarChargeRate"
            },
            "nullable": true
          },
          "engineSizeTable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CarChargeRate"
            },
            "nullable": true
          },
          "zeroEmissionsTable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CarChargeRate"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate charges for a Company Car.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "CarChargeRate": {
        "type": "object",
        "properties": {
          "rangeStart": {
            "type": "integer",
            "format": "int32"
          },
          "rangeStop": {
            "type": "integer",
            "format": "int32"
          },
          "rate": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate charges for a Company Car.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "ChangeSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "auditId": {
            "type": "string",
            "format": "uuid"
          },
          "previousAuditId": {
            "type": "string",
            "description": "This Id is used to delete the previous audit entry once the change summary entry is created\r\nfor the modifications between the current and the previous audit entry.",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "actionPerformed": {
            "$ref": "#/components/schemas/AuditEventAction"
          },
          "entityType": {
            "$ref": "#/components/schemas/EntityType"
          },
          "entityId": {
            "type": "string",
            "description": "Id of the underlying entity",
            "format": "uuid"
          },
          "employeeUniqueId": {
            "type": "string",
            "description": "Unique id of the employee this operation belongs to",
            "format": "uuid"
          },
          "employerUniqueId": {
            "type": "string",
            "description": "Unique id of the employer this operation belongs to",
            "format": "uuid"
          },
          "actionPerformedBy": {
            "type": "string",
            "nullable": true
          },
          "actionPerformedOn": {
            "type": "string",
            "nullable": true
          },
          "employeeFirstName": {
            "type": "string",
            "nullable": true
          },
          "employeeLastName": {
            "type": "string",
            "nullable": true
          },
          "uniqueId": {
            "type": "string",
            "description": "Unique id of the owner this request belongs to",
            "format": "uuid"
          },
          "parentEventType": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "payRunPeriod": {
            "type": "integer",
            "format": "int32"
          },
          "changeType": {
            "type": "string",
            "nullable": true
          },
          "modifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldModification"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ChangeSummaryListReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChangeSummary"
            },
            "description": "[readonly] If the type is application.json then this will contain a JSON representation of the relevant model",
            "nullable": true
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "Cis300": {
        "type": "object",
        "properties": {
          "taxMonth": {
            "type": "integer",
            "format": "int32"
          },
          "employeeCount": {
            "type": "integer",
            "format": "int32"
          },
          "employmentStatusDeclaration": {
            "type": "boolean"
          },
          "verificationDeclaration": {
            "type": "boolean"
          },
          "informationCorrectDeclaration": {
            "type": "boolean"
          },
          "inactivityDeclaration": {
            "type": "boolean"
          },
          "cisReturn": {
            "$ref": "#/components/schemas/CisReturn"
          },
          "iRmark": {
            "type": "string",
            "nullable": true
          },
          "xml": {
            "type": "string",
            "description": "This property will soon be removed and should not be used.\r\nThere is now a dedicated API endpoint for retrieving the XML for a submission.",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "employerReferences": {
            "$ref": "#/components/schemas/EmpRefs"
          },
          "govTalkSubmission": {
            "$ref": "#/components/schemas/GovTalkSubmission"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Cis300Declarations": {
        "type": "object",
        "properties": {
          "employmentStatus": {
            "type": "string",
            "nullable": true
          },
          "verification": {
            "type": "string",
            "nullable": true
          },
          "informationCorrect": {
            "type": "string",
            "nullable": true
          },
          "inactivity": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Cis300ReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/Cis300"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "CisContractor": {
        "type": "object",
        "properties": {
          "utr": {
            "type": "string",
            "nullable": true
          },
          "aOref": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent details of a CIS SubContractor when communicating with the HMRC Gateway"
      },
      "CisDetails": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CISSubContractorType"
          },
          "utr": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "tradingName": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "companyUtr": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "companyNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "vatRegistered": {
            "type": "boolean"
          },
          "vatNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double"
          },
          "reverseChargeVAT": {
            "type": "boolean"
          },
          "verification": {
            "$ref": "#/components/schemas/CisVerificationDetails"
          }
        },
        "additionalProperties": false,
        "description": "If an Employee is marked as a CIS Subcontractor then this model provides further details specifically related to the CIS details of the Employee."
      },
      "CisPartnership": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "utr": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "If an Employee is marked as a CIS Subcontractor and is registered as a Partnership then this model provides further details specifically related to the CIS Partnership."
      },
      "CisRequest": {
        "type": "object",
        "properties": {
          "contractor": {
            "$ref": "#/components/schemas/CisContractor"
          },
          "subcontractor": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisSubContractor"
            },
            "nullable": true
          },
          "declaration": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CisReturn": {
        "type": "object",
        "properties": {
          "contractor": {
            "$ref": "#/components/schemas/CisContractor"
          },
          "subcontractor": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisSubContractor"
            },
            "nullable": true
          },
          "nilReturn": {
            "type": "string",
            "nullable": true
          },
          "declarations": {
            "$ref": "#/components/schemas/Cis300Declarations"
          }
        },
        "additionalProperties": false
      },
      "CisStatement": {
        "type": "object",
        "properties": {
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "taxMonth": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "contractorName": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "contractorAddress": {
            "$ref": "#/components/schemas/Address"
          },
          "contractorOfficeNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "contractorPayeReference": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "subcontractorName": {
            "$ref": "#/components/schemas/RtiEmployeeName"
          },
          "subContractorUtr": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "verificationNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "grossAmountPaid": {
            "type": "number",
            "description": "[readonly] Gross Amount Paid (Excl VAT)",
            "format": "double"
          },
          "costOfMaterials": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "amountLiableToDeduction": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "amountDeducted": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "amountPayable": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "CIS Payment and Deduction Statement (CISOL1)"
      },
      "CisStatementListReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisStatement"
            },
            "description": "[readonly] If the type is application.json then this will contain a JSON representation of the relevant model",
            "nullable": true
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "CisSubContractor": {
        "type": "object",
        "properties": {
          "employeeUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "emailStatementTo": {
            "type": "string",
            "nullable": true
          },
          "numberOfPayments": {
            "type": "integer",
            "format": "int32"
          },
          "item": {
            "$ref": "#/components/schemas/Item"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "$ref": "#/components/schemas/RtiEmployeeName"
          },
          "tradingName": {
            "type": "string",
            "nullable": true
          },
          "worksRef": {
            "type": "string",
            "nullable": true
          },
          "unmatchedRate": {
            "type": "string",
            "nullable": true
          },
          "utr": {
            "type": "string",
            "nullable": true
          },
          "crn": {
            "type": "string",
            "nullable": true
          },
          "nino": {
            "type": "string",
            "nullable": true
          },
          "partnership": {
            "$ref": "#/components/schemas/CisPartnership"
          },
          "address": {
            "$ref": "#/components/schemas/RtiEmployeeAddress"
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "totalPaymentsUnrounded": {
            "type": "string",
            "nullable": true
          },
          "costOfMaterialsUnrounded": {
            "type": "string",
            "nullable": true
          },
          "umbrellaFee": {
            "type": "string",
            "nullable": true
          },
          "validationMsg": {
            "type": "string",
            "nullable": true
          },
          "verificationNumber": {
            "type": "string",
            "nullable": true
          },
          "totalPayments": {
            "type": "string",
            "nullable": true
          },
          "costOfMaterials": {
            "type": "string",
            "nullable": true
          },
          "totalDeducted": {
            "type": "string",
            "nullable": true
          },
          "matched": {
            "type": "string",
            "nullable": true
          },
          "taxTreatment": {
            "type": "string",
            "nullable": true
          },
          "netPayment": {
            "type": "string",
            "nullable": true
          },
          "vatAmount": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CisSubContractorSummary": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "tradingName": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "niNumber": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/CISSubContractorType"
          },
          "utr": {
            "type": "string",
            "nullable": true
          },
          "taxStatus": {
            "$ref": "#/components/schemas/CISTaxStatus"
          },
          "verificationNumber": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "validationMessage": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "CisSubContractorSummaryListReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisSubContractorSummary"
            },
            "description": "[readonly] If the type is application.json then this will contain a JSON representation of the relevant model",
            "nullable": true
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "CisVerification": {
        "type": "object",
        "properties": {
          "employees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "format": "int32"
          },
          "cisRequest": {
            "$ref": "#/components/schemas/CisRequest"
          },
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisSubContractor"
            },
            "nullable": true
          },
          "iRmark": {
            "type": "string",
            "nullable": true
          },
          "xml": {
            "type": "string",
            "description": "This property will soon be removed and should not be used.\r\nThere is now a dedicated API endpoint for retrieving the XML for a submission.",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "employerReferences": {
            "$ref": "#/components/schemas/EmpRefs"
          },
          "govTalkSubmission": {
            "$ref": "#/components/schemas/GovTalkSubmission"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "If an Employee is marked as a CIS Subcontractor then this model is included ad a child of CisDetails and is used to represent the Verification details of the Subcontractor"
      },
      "CisVerificationDetails": {
        "type": "object",
        "properties": {
          "manuallyEntered": {
            "type": "boolean"
          },
          "matchInsteadOfVerify": {
            "type": "boolean"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "taxStatus": {
            "$ref": "#/components/schemas/CISTaxStatus"
          },
          "verificationRequest": {
            "type": "string",
            "description": "[readonly] If a Verification request has been made for this employee then this will show its ID",
            "format": "uuid",
            "nullable": true
          },
          "verificationResponse": {
            "$ref": "#/components/schemas/CisSubContractor"
          }
        },
        "additionalProperties": false
      },
      "Contract.Address": {
        "type": "object",
        "properties": {
          "line1": {
            "type": "string",
            "nullable": true
          },
          "line2": {
            "type": "string",
            "nullable": true
          },
          "line3": {
            "type": "string",
            "nullable": true
          },
          "line4": {
            "type": "string",
            "nullable": true
          },
          "line5": {
            "type": "string",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "$ref": "#/components/schemas/Country"
          },
          "foreignCountry": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AeAssessmentAction": {
        "type": "object",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/AeAction"
          },
          "employeeState": {
            "$ref": "#/components/schemas/AeEmployeeState"
          },
          "actionCompleted": {
            "type": "boolean",
            "description": "Indicates whether or not the required action was successfully completed"
          },
          "actionCompletedMessage": {
            "type": "string",
            "description": "Gives further information about the action taken or the reason if wasn't successfully completed",
            "nullable": true
          },
          "requiredLetter": {
            "$ref": "#/components/schemas/AeStatutoryLetter"
          },
          "pensionSchemeId": {
            "type": "string",
            "description": "The PensionSchemeId that a completed action relates to",
            "format": "uuid"
          },
          "workerGroupId": {
            "type": "string",
            "description": "The WorkerGroupId that a completed action relates to",
            "format": "uuid"
          },
          "letterNotYetSent": {
            "type": "boolean",
            "description": "Indicates whether or not any required letter has been sent"
          }
        },
        "additionalProperties": false
      },
      "Contract.AeAssessmentRequest": {
        "type": "object",
        "properties": {
          "assessmentDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "As part of AutoEnrolment we assess your Employees to see if they need to be auto-enroled in a Pension.\r\nThis model shows the result of an assessment."
      },
      "Contract.AeAssessmentResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique id of the object",
            "format": "uuid"
          },
          "employeeState": {
            "$ref": "#/components/schemas/AeEmployeeState"
          },
          "age": {
            "type": "integer",
            "description": "The age of the Employee at the time of the assessment",
            "format": "int32"
          },
          "ukWorker": {
            "$ref": "#/components/schemas/AeUKWorker"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "The PaySchedule ordinal for the Employee at the time of the assessment",
            "format": "int32"
          },
          "earningsInPeriod": {
            "type": "number",
            "format": "double"
          },
          "qualifyingEarningsInPeriod": {
            "type": "number",
            "format": "double"
          },
          "aeExclusionCode": {
            "$ref": "#/components/schemas/AeExclusionCode"
          },
          "status": {
            "$ref": "#/components/schemas/AeStatus"
          },
          "reason": {
            "type": "string",
            "description": "The reason for determining the Status given.",
            "nullable": true
          },
          "action": {
            "$ref": "#/components/schemas/Contract.AeAssessmentAction"
          },
          "employee": {
            "$ref": "#/components/schemas/Contract.EmployeeItem"
          },
          "assessmentDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.AeEmployeeAssessmentHistoryRequest": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "description": "The unique identifier of the Role associated with this assessment.",
            "format": "uuid",
            "nullable": true
          },
          "payRunId": {
            "type": "string",
            "description": "The unique identifier of the Pay Run associated with this assessment.",
            "format": "uuid",
            "nullable": true
          },
          "reason": {
            "$ref": "#/components/schemas/AeReason"
          },
          "assessmentDate": {
            "type": "string",
            "description": "The actual date the assessment was performed.",
            "format": "date"
          },
          "periodStartDate": {
            "type": "string",
            "description": "The start date of the pay reference period for which this assessment applies.",
            "format": "date"
          },
          "periodEndDate": {
            "type": "string",
            "description": "The end date of the pay reference period for which this assessment applies.",
            "format": "date"
          },
          "age": {
            "type": "integer",
            "description": "The employee's age at the time of assessment.",
            "format": "int32"
          },
          "lowerEarningsThreshold": {
            "type": "number",
            "description": "The Lower Earnings Threshold applicable for the assessment period.",
            "format": "double"
          },
          "qualifyingThreshold": {
            "type": "number",
            "description": "The Qualifying Earnings Threshold (or Auto-Enrolment Trigger) applicable for the assessment period.",
            "format": "double"
          },
          "action": {
            "$ref": "#/components/schemas/AeAction"
          },
          "actionDate": {
            "type": "string",
            "description": "The date when the action was applied, if applicable.",
            "format": "date",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/AeStatus"
          },
          "letter": {
            "$ref": "#/components/schemas/AeLetter"
          },
          "letterSentDate": {
            "type": "string",
            "description": "The date the letter was sent to employee, if applicable.",
            "format": "date",
            "nullable": true
          },
          "letterSentType": {
            "$ref": "#/components/schemas/AeLetterSentType"
          },
          "letterExternalDataProviderId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "pensionId": {
            "type": "string",
            "description": "The unique identifier of the pension associated with this assessment, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "pensionSchemeId": {
            "type": "string",
            "description": "The unique identifier of the pension scheme associated with this assessment, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "workerGroupId": {
            "type": "string",
            "description": "The unique identifier of the worker group with this assessment, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "isNewPension": {
            "type": "boolean",
            "description": "Is this assessment resulting in a new pension"
          },
          "isJointAssessment": {
            "type": "boolean",
            "description": "Is this a joint assessment with another role"
          },
          "reenrolmentDate": {
            "type": "string",
            "description": "Re-enrolment date if assessment occurs during re-enrolment period",
            "format": "date",
            "nullable": true
          },
          "version": {
            "type": "integer",
            "description": "The version of this assessment in the current pay run",
            "format": "int32"
          },
          "isLatestVersion": {
            "type": "boolean",
            "description": "Is the latest version of this assessment"
          }
        },
        "additionalProperties": false
      },
      "Contract.AeEmployeeAssessmentHistoryResponse": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "string",
            "description": "The employee ID associated with this assessment",
            "format": "uuid"
          },
          "employeeRoleId": {
            "type": "string",
            "description": "Employee role ID associated with this assessment, if applicable",
            "format": "uuid",
            "nullable": true
          },
          "payRunId": {
            "type": "string",
            "description": "The pay run ID that triggered this assessment (optional)",
            "format": "uuid",
            "nullable": true
          },
          "reason": {
            "$ref": "#/components/schemas/AeReason"
          },
          "assessmentDate": {
            "type": "string",
            "description": "Assessment date",
            "format": "date"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of assessment period",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "End date of assessment period",
            "format": "date",
            "nullable": true
          },
          "age": {
            "type": "integer",
            "description": "Employee's age at the time of assessment",
            "format": "int32"
          },
          "lowerEarningsThreshold": {
            "type": "number",
            "description": "Lower earnings threshold for the assessment period",
            "format": "double"
          },
          "qualifyingThreshold": {
            "type": "number",
            "description": "Qualifying threshold for the assessment period",
            "format": "double"
          },
          "action": {
            "$ref": "#/components/schemas/AeAction"
          },
          "actionDate": {
            "type": "string",
            "description": "The date when the action was created",
            "format": "date",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/AeStatus"
          },
          "letter": {
            "$ref": "#/components/schemas/AeLetter"
          },
          "letterSentDate": {
            "type": "string",
            "description": "The Date the letter was sent, if applicable",
            "format": "date",
            "nullable": true
          },
          "letterSentType": {
            "$ref": "#/components/schemas/AeLetterSentType"
          },
          "letterExternalDataProviderId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "pensionId": {
            "type": "string",
            "description": "The unique identifier of the pension associated with this assessment, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "pensionSchemeId": {
            "type": "string",
            "description": "The unique identifier of the pension scheme associated with this assessment, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "workerGroupId": {
            "type": "string",
            "description": "The worker group ID associated with this assessment, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "isNewPension": {
            "type": "boolean",
            "description": "Is this assessment resulting in a new pension"
          },
          "reEnrolmentDate": {
            "type": "string",
            "description": "Re-enrolment date if assessment occurs during re-enrolment period",
            "format": "date",
            "nullable": true
          },
          "isJointAssessment": {
            "type": "boolean",
            "description": "Is this a joint assessment with another role"
          }
        },
        "additionalProperties": false
      },
      "Contract.AeEmployeeAssessmentRequest": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/AeEmployee"
          },
          "period": {
            "$ref": "#/components/schemas/AePeriod"
          },
          "pensionSchemes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AePensionScheme"
            },
            "description": "The pension schemes for the employer",
            "nullable": true
          },
          "assessments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.AeEmployeeAssessmentResponse"
            },
            "description": "The previous assessments for the employee",
            "nullable": true
          },
          "explanation": {
            "type": "boolean",
            "description": "If an explanation is required"
          }
        },
        "additionalProperties": false
      },
      "Contract.AeEmployeeAssessmentResponse": {
        "type": "object",
        "properties": {
          "assessmentDate": {
            "type": "string",
            "description": "The date of the assessment",
            "format": "date"
          },
          "earnings": {
            "type": "number",
            "description": "The earnings used in the assessment",
            "format": "double"
          },
          "qualifyingEarnings": {
            "type": "number",
            "description": "The qualifying earnings used in the assessment",
            "format": "double"
          },
          "reason": {
            "$ref": "#/components/schemas/AeReason"
          },
          "action": {
            "$ref": "#/components/schemas/AeAction"
          },
          "actionDate": {
            "type": "string",
            "description": "The date the action will happen",
            "format": "date",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/AeStatus"
          },
          "letter": {
            "$ref": "#/components/schemas/AeLetter"
          },
          "letterSentDate": {
            "type": "string",
            "description": "The Date the letter was sent, if applicable",
            "format": "date",
            "nullable": true
          },
          "letterSentType": {
            "$ref": "#/components/schemas/AeLetterSentType"
          },
          "letterExternalDataProviderId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "pensionId": {
            "type": "string",
            "description": "The pension the role will be enrolled into, if applicable",
            "format": "uuid",
            "nullable": true
          },
          "pensionSchemeId": {
            "type": "string",
            "description": "The pension scheme the role will be enrolled into, if applicable",
            "format": "uuid",
            "nullable": true
          },
          "workerGroupId": {
            "type": "string",
            "description": "The worker group the role will be enrolled into, if applicable",
            "format": "uuid",
            "nullable": true
          },
          "isNewPension": {
            "type": "boolean",
            "description": "The pension the role will be enrolled into is a new pension"
          },
          "roleId": {
            "type": "string",
            "description": "The employee role the assessment relates to, if applicable",
            "format": "uuid",
            "nullable": true
          },
          "explanation": {
            "type": "string",
            "description": "The optional explanation for the assessment",
            "nullable": true
          },
          "isCurrentPayRun": {
            "type": "boolean",
            "description": "If it is an assessment for the current pay run"
          },
          "isPreviousPayRun": {
            "type": "boolean",
            "description": "If it is an assessment for the previous pay run"
          },
          "isJointAssessment": {
            "type": "boolean",
            "description": "If it is an assessment joint with another role"
          },
          "reenrolmentDate": {
            "type": "string",
            "description": "Re-enrolment date if a re-enrolment period",
            "format": "date",
            "nullable": true
          },
          "version": {
            "type": "integer",
            "description": "The version of this assessment in the current pay run",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Contract.AeEmployeeLetterResponse": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "string",
            "description": "The employee ID",
            "format": "uuid",
            "nullable": true
          },
          "employeeUniqueId": {
            "type": "integer",
            "description": "The employee uniqueId",
            "format": "int32"
          },
          "payrollCode": {
            "type": "string",
            "description": "The employee payroll code",
            "nullable": true
          },
          "employeeName": {
            "type": "string",
            "description": "The employee name",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "The employee email address",
            "nullable": true
          },
          "roles": {
            "type": "string",
            "description": "The roles associated with the letter",
            "nullable": true
          },
          "assessmentId": {
            "type": "string",
            "description": "The assessment Id the letter is related to",
            "format": "uuid"
          },
          "isJointAssessment": {
            "type": "boolean",
            "description": "If the assessment was a joint assessment"
          },
          "period": {
            "type": "integer",
            "description": "The tax period in which the letter was generated",
            "format": "int32"
          },
          "letterType": {
            "$ref": "#/components/schemas/AeLetter"
          },
          "sentDate": {
            "type": "string",
            "description": "The roles which generated the letter",
            "format": "date",
            "nullable": true
          },
          "letterSentType": {
            "$ref": "#/components/schemas/AeLetterSentType"
          },
          "externalDataProviderId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          }
        },
        "additionalProperties": false
      },
      "Contract.AllowanceGradesRequest": {
        "type": "object",
        "properties": {
          "allowanceGradePayslipText": {
            "type": "string",
            "description": "Alternative text for display on the payslip (i.e. TLR1A)",
            "nullable": true
          },
          "allowanceGradeAnnualValue": {
            "type": "number",
            "description": "FTE value of allowance grade",
            "format": "double"
          },
          "allowanceGradeEffectiveDate": {
            "type": "string",
            "description": "Effective date of the value",
            "format": "date"
          },
          "allowanceName": {
            "type": "string",
            "description": "Spine Allowance Name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AllowanceGradesResponse": {
        "type": "object",
        "properties": {
          "allowanceGradePayslipText": {
            "type": "string",
            "description": "Alternative text for display on the payslip (i.e. TLR1A)",
            "nullable": true
          },
          "allowanceGradeAnnualValue": {
            "type": "number",
            "description": "FTE value of allowance grade",
            "format": "double"
          },
          "allowanceGradeEffectiveDate": {
            "type": "string",
            "description": "Effective date of the value",
            "format": "date"
          },
          "uniqueId": {
            "type": "string",
            "description": "Spine Allowance identifier",
            "format": "uuid"
          },
          "allowanceName": {
            "type": "string",
            "description": "Spine Allowance Name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AllowanceGradesUpdateRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Allowance Grades identifier",
            "format": "uuid"
          },
          "allowanceGradePayslipText": {
            "type": "string",
            "description": "Alternative text for display on the payslip (i.e. TLR1A)",
            "nullable": true
          },
          "allowanceGradeAnnualValue": {
            "type": "number",
            "description": "FTE value of allowance grade",
            "format": "double"
          },
          "allowanceGradeEffectiveDate": {
            "type": "string",
            "description": "Effective date of the value",
            "format": "date"
          },
          "allowanceName": {
            "type": "string",
            "description": "Spine Allowance Name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AnalysisCategoryCodeRequest": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "accountingCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AnalysisCategoryCodeResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Analysis Category Code identifier",
            "format": "uuid"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "accountingCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AnalysisCategoryRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Analysis Category Name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AnalysisCategoryResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Analysis Category identifier",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Analysis Category Name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.AutoEnrolmentRequest": {
        "type": "object",
        "properties": {
          "lastAssessment": {
            "$ref": "#/components/schemas/Contract.AeAssessmentRequest"
          },
          "ukWorker": {
            "$ref": "#/components/schemas/AeUKWorker"
          },
          "daysToDeferAssessment": {
            "type": "integer",
            "description": "The number of days, if any, to defer assessment of this employee.\r\nYou're allowed to defer assessment of new employees by up to 3 months.",
            "format": "int32"
          },
          "deferByMonthsNotDays": {
            "type": "boolean",
            "description": "If set to true then the value in DaysToDeferAssessment will be treated as a number of months, not a number of days"
          },
          "exempt": {
            "type": "boolean"
          },
          "aeExclusionCode": {
            "$ref": "#/components/schemas/AeExclusionCode"
          },
          "aePostponementLetterSent": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.AutoEnrolmentResponse": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/AeEmployeeState"
          },
          "stateDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "postponementDate": {
            "type": "string",
            "description": "[readonly] If a value is present, then employee wont be enrolled on an AE Pension until after this date.\r\nThis is automatically set to a date if the employee is deemed to be an EligibleJobHolder, but the employer has set a Postponement period and this value is currently null\r\nThis is automatically set to null if it already has a value and the employee is deemed NOT to be an EligibleJobHolder - ie, they previously qualified but now do not.",
            "format": "date",
            "nullable": true
          },
          "lastAssessment": {
            "$ref": "#/components/schemas/Contract.AeAssessmentResponse"
          },
          "ukWorker": {
            "$ref": "#/components/schemas/AeUKWorker"
          },
          "daysToDeferAssessment": {
            "type": "integer",
            "description": "The number of days, if any, to defer assessment of this employee.\r\nYou're allowed to defer assessment of new employees by up to 3 months.",
            "format": "int32"
          },
          "deferByMonthsNotDays": {
            "type": "boolean",
            "description": "If set to true then the value in DaysToDeferAssessment will be treated as a number of months, not a number of days"
          },
          "exempt": {
            "type": "boolean"
          },
          "aeExclusionCode": {
            "$ref": "#/components/schemas/AeExclusionCode"
          },
          "aePostponementLetterSent": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.AutoEnrolmentSettingsRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid"
          },
          "stagingDate": {
            "type": "string",
            "format": "date"
          },
          "cyclicalReenrolmentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "previousCyclicalReenrolmentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "defaultPension": {
            "$ref": "#/components/schemas/Contract.PensionSelectionRequest"
          },
          "pensionSameAsDefault": {
            "type": "boolean"
          },
          "daysToDeferAssessment": {
            "type": "integer",
            "description": "The number of days, if any, to defer assessment of new employees.\r\nYou're allowed to defer assessment of new employees by up to 3 months.\r\nThis is the default value used when you create a new employee. It can be changed on a per-employee basis.",
            "format": "int32"
          },
          "deferByMonthsNotDays": {
            "type": "boolean",
            "description": "If set to true then the value in DaysToDeferAssessment will be treated as a number of months, not a number of days"
          },
          "deferEnrolmentBy": {
            "type": "integer",
            "description": "The number of days )or weeks, or months), if any, to defer enrolment of employees that are Eligible Jobholders.\r\nFor example, if this is set to 30 days then if an employee meets the criteria for enrolment then they'll only be enrolled if they still meet the criteria 30 days later",
            "format": "int32"
          },
          "deferEnrolmentByPeriodType": {
            "$ref": "#/components/schemas/DeferalPeriodType"
          },
          "includeNonPensionedEmployeesInSubmission": {
            "type": "boolean",
            "description": "Whether or not to include details of non-pensioned employees in your submissions to this provider"
          },
          "exemptFromAeRegulations": {
            "type": "boolean",
            "description": "Indicates if an employer is exempt from normal AE regulations"
          }
        },
        "additionalProperties": false
      },
      "Contract.AutoEnrolmentSettingsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "stagingDate": {
            "type": "string",
            "format": "date"
          },
          "cyclicalReenrolmentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "previousCyclicalReenrolmentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "defaultPension": {
            "$ref": "#/components/schemas/Contract.PensionSelectionResponse"
          },
          "pensionSameAsDefault": {
            "type": "boolean"
          },
          "daysToDeferAssessment": {
            "type": "integer",
            "description": "The number of days, if any, to defer assessment of new employees.\r\nYou're allowed to defer assessment of new employees by up to 3 months.\r\nThis is the default value used when you create a new employee. It can be changed on a per-employee basis.",
            "format": "int32"
          },
          "deferByMonthsNotDays": {
            "type": "boolean",
            "description": "If set to true then the value in DaysToDeferAssessment will be treated as a number of months, not a number of days"
          },
          "deferEnrolmentBy": {
            "type": "integer",
            "description": "The number of days )or weeks, or months), if any, to defer enrolment of employees that are Eligible Jobholders.\r\nFor example, if this is set to 30 days then if an employee meets the criteria for enrolment then they'll only be enrolled if they still meet the criteria 30 days later",
            "format": "int32"
          },
          "deferEnrolmentByPeriodType": {
            "$ref": "#/components/schemas/DeferalPeriodType"
          },
          "includeNonPensionedEmployeesInSubmission": {
            "type": "boolean",
            "description": "Whether or not to include details of non-pensioned employees in your submissions to this provider"
          },
          "exemptFromAeRegulations": {
            "type": "boolean",
            "description": "Indicates if an employer is exempt from normal AE regulations"
          }
        },
        "additionalProperties": false
      },
      "Contract.BankDetails": {
        "type": "object",
        "properties": {
          "bankName": {
            "type": "string",
            "nullable": true
          },
          "bankBranch": {
            "type": "string",
            "nullable": true
          },
          "bankReference": {
            "type": "string",
            "nullable": true
          },
          "accountName": {
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "buildingSocietyRollNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.BenefitCarImportRequest": {
        "type": "object",
        "properties": {
          "makeAndModel": {
            "type": "string",
            "description": "Car make and model name",
            "nullable": true
          },
          "registration": {
            "type": "string",
            "description": "Vehicle registration number",
            "nullable": true
          },
          "firstRegistered": {
            "type": "string",
            "description": "Date the vehicle was first registered",
            "format": "date",
            "nullable": true
          },
          "hasApprovedEmissionsValue": {
            "type": "boolean",
            "description": "Indicates if CO2 emissions data is approved"
          },
          "co2Emissions": {
            "type": "integer",
            "description": "CO2 emissions value",
            "format": "int32"
          },
          "engineSize": {
            "type": "integer",
            "description": "Engine size value",
            "format": "int32"
          },
          "zeroEmissionsMileage": {
            "type": "integer",
            "description": "Mileage driven in zero-emission mode.\r\nApplicable only for Electric, Hybrid, and Petrol/Other fuel types.",
            "format": "int32"
          },
          "fuelType": {
            "$ref": "#/components/schemas/BenefitDetailsCarPowerType"
          },
          "availableFrom": {
            "type": "string",
            "description": "Date the car benefit became available",
            "format": "date",
            "nullable": true
          },
          "availableTo": {
            "type": "string",
            "description": "Date the car benefit ended",
            "format": "date",
            "nullable": true
          },
          "daysUnavailable": {
            "type": "integer",
            "description": "Total number of days the vehicle was unavailable",
            "format": "int32"
          },
          "listPrice": {
            "type": "number",
            "description": "Original list price of the vehicle",
            "format": "double"
          },
          "nonStandardAccessories": {
            "type": "number",
            "description": "Cost of any non-standard accessories",
            "format": "double"
          },
          "employeeCapitalContributions": {
            "type": "number",
            "description": "Employee's capital contribution",
            "format": "double"
          },
          "employeePrivateContributions": {
            "type": "number",
            "description": "Employee's private contributions",
            "format": "double"
          },
          "freeFuel": {
            "type": "boolean",
            "description": "Indicates if free fuel is provided"
          },
          "fuelAvailableFrom": {
            "type": "string",
            "description": "Date free fuel benefit started",
            "format": "date",
            "nullable": true
          },
          "fuelAvailableTo": {
            "type": "string",
            "description": "Date free fuel benefit ended",
            "format": "date",
            "nullable": true
          },
          "freeFuelReinstated": {
            "type": "boolean",
            "description": "Whether the free fuel benefit was reinstated"
          }
        },
        "additionalProperties": false
      },
      "Contract.BenefitImportRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Optional. If value is provided then update else create benefit.",
            "format": "uuid",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "description": "The payroll code of the employee to update",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "type": {
            "$ref": "#/components/schemas/BenefitType"
          },
          "declarationType": {
            "$ref": "#/components/schemas/BenefitDeclarationType"
          },
          "loan": {
            "$ref": "#/components/schemas/Contract.BenefitLoanImportRequest"
          },
          "car": {
            "$ref": "#/components/schemas/Contract.BenefitCarImportRequest"
          },
          "description": {
            "type": "string",
            "description": "A description of this benefit",
            "nullable": true
          },
          "value": {
            "type": "number",
            "description": "The total value of the benefit.",
            "format": "double"
          },
          "employeeContribution": {
            "type": "number",
            "description": "Amount contributed by the employee.",
            "format": "double"
          },
          "assetType": {
            "$ref": "#/components/schemas/BenefitDetailsAssetType"
          },
          "useOfAssetType": {
            "$ref": "#/components/schemas/BenefitDetailsUseOfAssetType"
          },
          "class1AType": {
            "$ref": "#/components/schemas/BenefitDetailsClass1AType"
          },
          "nonClass1AType": {
            "$ref": "#/components/schemas/BenefitDetailsNonClass1AType"
          },
          "paymentType": {
            "$ref": "#/components/schemas/BenefitDetailsPaymentType"
          },
          "isPeriodValue": {
            "type": "boolean",
            "description": "To be used for the benefit period"
          },
          "tradingOrganisation": {
            "type": "boolean",
            "description": "Only relevant to Benefits with Type Entertainment"
          },
          "cashEquivalentFuel": {
            "type": "number",
            "description": "Only relevant to Benefits with Type Vans",
            "format": "double"
          },
          "startDate": {
            "type": "string",
            "description": "Start date for imported benefit",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "End date for imported benefit",
            "format": "date",
            "nullable": true
          },
          "useProRata": {
            "type": "boolean",
            "description": "Benefit calculation should be done on pro rata rules"
          },
          "openingBalance": {
            "type": "number",
            "description": "The amount of benefit paid YTD when setting up a benefit",
            "format": "double"
          },
          "overrideOpeningBalance": {
            "type": "boolean",
            "description": "To be used to change the opening balance if the benefit has been payrolled"
          }
        },
        "additionalProperties": false
      },
      "Contract.BenefitLoanImportRequest": {
        "type": "object",
        "properties": {
          "numberOfJointBorrowers": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "loanMade": {
            "type": "string",
            "description": "Date when the loan started",
            "format": "date",
            "nullable": true
          },
          "loanDischarged": {
            "type": "string",
            "description": "Date when the loan ended",
            "format": "date",
            "nullable": true
          },
          "startingBalance": {
            "type": "number",
            "description": "Loan amount at the start of the year",
            "format": "double"
          },
          "closingBalance": {
            "type": "number",
            "description": "Loan amount at the end of the year",
            "format": "double"
          },
          "maxBalanceInYear": {
            "type": "number",
            "description": "Highest loan balance during the year",
            "format": "double"
          },
          "interestPaid": {
            "type": "number",
            "description": "Interest amount paid by the employee",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.CisDetailsRequest": {
        "type": "object",
        "properties": {
          "verification": {
            "$ref": "#/components/schemas/Contract.CisVerificationDetailsRequest"
          },
          "type": {
            "$ref": "#/components/schemas/CISSubContractorType"
          },
          "utr": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "tradingName": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "companyUtr": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "companyNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "vatRegistered": {
            "type": "boolean"
          },
          "vatNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double"
          },
          "reverseChargeVAT": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.CisDetailsResponse": {
        "type": "object",
        "properties": {
          "verification": {
            "$ref": "#/components/schemas/Contract.CisVerificationDetailsResponse"
          },
          "type": {
            "$ref": "#/components/schemas/CISSubContractorType"
          },
          "utr": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "tradingName": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "companyUtr": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "companyNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "vatRegistered": {
            "type": "boolean"
          },
          "vatNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "vatRate": {
            "type": "number",
            "format": "double"
          },
          "reverseChargeVAT": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.CisPartnership": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "utr": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "If an Employee is marked as a CIS Subcontractor and is registered as a Partnership then this model provides further details specifically related to the CIS Partnership."
      },
      "Contract.CisSubContractor": {
        "type": "object",
        "properties": {
          "employeeUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "emailStatementTo": {
            "type": "string",
            "nullable": true
          },
          "numberOfPayments": {
            "type": "integer",
            "format": "int32"
          },
          "item": {
            "$ref": "#/components/schemas/Contract.CisSubContractorItem"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "$ref": "#/components/schemas/Contract.RtiEmployeeName"
          },
          "tradingName": {
            "type": "string",
            "nullable": true
          },
          "worksRef": {
            "type": "string",
            "nullable": true
          },
          "unmatchedRate": {
            "type": "string",
            "nullable": true
          },
          "utr": {
            "type": "string",
            "nullable": true
          },
          "crn": {
            "type": "string",
            "nullable": true
          },
          "nino": {
            "type": "string",
            "nullable": true
          },
          "partnership": {
            "$ref": "#/components/schemas/Contract.CisPartnership"
          },
          "address": {
            "$ref": "#/components/schemas/Contract.RtiEmployeeAddress"
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "totalPaymentsUnrounded": {
            "type": "string",
            "nullable": true
          },
          "costOfMaterialsUnrounded": {
            "type": "string",
            "nullable": true
          },
          "umbrellaFee": {
            "type": "string",
            "nullable": true
          },
          "validationMsg": {
            "type": "string",
            "nullable": true
          },
          "verificationNumber": {
            "type": "string",
            "nullable": true
          },
          "totalPayments": {
            "type": "string",
            "nullable": true
          },
          "costOfMaterials": {
            "type": "string",
            "nullable": true
          },
          "totalDeducted": {
            "type": "string",
            "nullable": true
          },
          "matched": {
            "type": "string",
            "nullable": true
          },
          "taxTreatment": {
            "type": "string",
            "nullable": true
          },
          "netPayment": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.CisSubContractorItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.CisVerificationDetailsRequest": {
        "type": "object",
        "properties": {
          "manuallyEntered": {
            "type": "boolean"
          },
          "matchInsteadOfVerify": {
            "type": "boolean"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "taxStatus": {
            "$ref": "#/components/schemas/CISTaxStatus"
          },
          "verificationResponse": {
            "$ref": "#/components/schemas/Contract.CisSubContractor"
          }
        },
        "additionalProperties": false
      },
      "Contract.CisVerificationDetailsResponse": {
        "type": "object",
        "properties": {
          "verificationRequest": {
            "type": "string",
            "description": "If a Verification request has been made for this employee then this will show its ID",
            "format": "uuid",
            "nullable": true
          },
          "manuallyEntered": {
            "type": "boolean"
          },
          "matchInsteadOfVerify": {
            "type": "boolean"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "taxStatus": {
            "$ref": "#/components/schemas/CISTaxStatus"
          },
          "verificationResponse": {
            "$ref": "#/components/schemas/Contract.CisSubContractor"
          }
        },
        "additionalProperties": false
      },
      "Contract.CombinedPensionContributionsReportRequest": {
        "type": "object",
        "properties": {
          "reportFormat": {
            "$ref": "#/components/schemas/ReportFormat"
          },
          "pensionSchemeId": {
            "type": "string",
            "format": "uuid"
          },
          "effectiveDateFrom": {
            "type": "string",
            "format": "date"
          },
          "effectiveDateTo": {
            "type": "string",
            "format": "date"
          },
          "payScheduleSelections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PayPeriodOrdinalSelection"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.CostCentreJournalOverridesRequest": {
        "type": "object",
        "properties": {
          "tokenDescription": {
            "type": "string",
            "description": "Token Description",
            "nullable": true
          },
          "mapping": {
            "type": "string",
            "description": "CostCentre Journal Overrides Mapping",
            "nullable": true
          },
          "journalTokenPublicId": {
            "type": "string",
            "description": "Journal Token Public Id",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.CostCentreJournalOverridesResponse": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Cost Centre Journal Overrides identifier",
            "format": "uuid"
          },
          "tokenDescription": {
            "type": "string",
            "description": "Token Description",
            "nullable": true
          },
          "mapping": {
            "type": "string",
            "description": "CostCentre Journal Overrides Mapping",
            "nullable": true
          },
          "journalTokenPublicId": {
            "type": "string",
            "description": "Journal Token Public Id",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.CostCentreJournalOverridesResponseItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.CostCentreJournalOverridesUpdateRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Unique Id",
            "format": "uuid"
          },
          "tokenDescription": {
            "type": "string",
            "description": "Token Description",
            "nullable": true
          },
          "mapping": {
            "type": "string",
            "description": "CostCentre Journal Overrides Mapping",
            "nullable": true
          },
          "journalTokenPublicId": {
            "type": "string",
            "description": "Journal Token Public Id",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.CreateEmployeeRequest": {
        "type": "object",
        "properties": {
          "personalDetails": {
            "$ref": "#/components/schemas/Contract.PersonalDetailsRequest"
          },
          "employmentDetails": {
            "$ref": "#/components/schemas/Contract.EmploymentDetailsRequest"
          },
          "autoEnrolment": {
            "$ref": "#/components/schemas/Contract.AutoEnrolmentRequest"
          },
          "leaveSettings": {
            "$ref": "#/components/schemas/Contract.EmployeeLeaveSettingsRequest"
          },
          "rightToWork": {
            "$ref": "#/components/schemas/Contract.RightToWork"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/Contract.BankDetails"
          },
          "payOptions": {
            "$ref": "#/components/schemas/Contract.PayOptionsRequest"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "holidaySchemeUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "evcId": {
            "type": "string",
            "description": "If set then this will be used as the EmployeeIDFromProduct sent to EVC in place of the standard EmployeeId.",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Pension Scheme that will be used for this employee.",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeName": {
            "type": "string",
            "description": "The name of the Pension Scheme that will be used for this employee.",
            "nullable": true
          },
          "defaultWorkerGroupUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Worker Group that will be used for this employee.",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupName": {
            "type": "string",
            "description": "The name of the Worker Group that will be used for this employee.",
            "nullable": true
          },
          "sourceSystemId": {
            "maxLength": 50,
            "type": "string",
            "description": "Used by external systems so they can store an immutable reference.\r\nOnce this property is set it cannot be changed.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.CustomReportRequest": {
        "type": "object",
        "properties": {
          "payRunUniqueIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "nullable": true
          },
          "reportFormat": {
            "$ref": "#/components/schemas/ReportFormat"
          }
        },
        "additionalProperties": false
      },
      "Contract.DepartmentJournalOverridesRequest": {
        "type": "object",
        "properties": {
          "tokenDescription": {
            "type": "string",
            "description": "Token Description",
            "nullable": true
          },
          "mapping": {
            "type": "string",
            "description": "Department Journal Overrides Mapping",
            "nullable": true
          },
          "journalTokenPublicId": {
            "type": "string",
            "description": "Journal Token Public Id",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.DepartmentJournalOverridesResponse": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Department Journal Overrides identifier",
            "format": "uuid"
          },
          "tokenDescription": {
            "type": "string",
            "description": "Token Description",
            "nullable": true
          },
          "mapping": {
            "type": "string",
            "description": "Department Journal Overrides Mapping",
            "nullable": true
          },
          "journalTokenPublicId": {
            "type": "string",
            "description": "Journal Token Public Id",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.DepartmentJournalOverridesResponseItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.DepartmentJournalOverridesUpdateRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Unique Id",
            "format": "uuid"
          },
          "tokenDescription": {
            "type": "string",
            "description": "Token Description",
            "nullable": true
          },
          "mapping": {
            "type": "string",
            "description": "Department Journal Overrides Mapping",
            "nullable": true
          },
          "journalTokenPublicId": {
            "type": "string",
            "description": "Journal Token Public Id",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.DepartmentRequest": {
        "required": [
          "code",
          "title"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The unique code for this Department"
          },
          "title": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The name of this Department"
          },
          "color": {
            "maxLength": 6,
            "type": "string",
            "description": "A color to used to represent this Department, in hex format. ie 'ff0000'",
            "nullable": true
          },
          "accountingCode": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.DepartmentResponse": {
        "required": [
          "code",
          "title"
        ],
        "type": "object",
        "properties": {
          "employeeCount": {
            "type": "integer",
            "description": "The number of employees with this set as their primary department",
            "format": "int32"
          },
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The unique code for this Department"
          },
          "title": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The name of this Department"
          },
          "color": {
            "maxLength": 6,
            "type": "string",
            "description": "A color to used to represent this Department, in hex format. ie 'ff0000'",
            "nullable": true
          },
          "accountingCode": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.DirectorshipDetails": {
        "type": "object",
        "properties": {
          "isDirector": {
            "type": "boolean"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "niAlternativeMethod": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeLeaveSettingsRequest": {
        "type": "object",
        "properties": {
          "useDefaultHolidayType": {
            "type": "boolean",
            "description": "If true then the value for HolidayType comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowanceResetDate": {
            "type": "boolean",
            "description": "If true then the value for the AllowanceResetDate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowance": {
            "type": "boolean",
            "description": "If true then the value for the Allowance comes from the Employer record.\r\nThis property only appears if the LeaveSettings if a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieu": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuRate": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieuRate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuAllGrossPay": {
            "type": "boolean",
            "description": "[Deprecated] Please use UseUseDefaultHolidayAccrualBasis instead.\r\nThis filed will be removed in a later release.",
            "deprecated": true
          },
          "useDefaultHolidayAccrualBasis": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualBasis comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)",
            "nullable": true
          },
          "useDefaultAccruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccrueHoursPerDay": {
            "type": "boolean",
            "description": "If true then the value for AccrueHoursPerDay comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultMaximumAccruePeriod": {
            "type": "boolean",
            "description": "If true then the value for MaximumAccruePeriod comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "allowanceResetDate": {
            "type": "string",
            "description": "The date that the holiday allowance resets. Only the day/month part of the value is relevant.",
            "format": "date"
          },
          "allowance": {
            "type": "number",
            "description": "The number of days holiday an employee can take per year if HolidayType is Days.\r\nOtherwise this is readonly and gives you the number of days accrued since the last reset",
            "format": "double"
          },
          "adjustment": {
            "type": "number",
            "description": "Adjustment to number of hours/days/weeks holiday this employee can take per year.\r\nWill reset to 0 when the Allowance resets.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)",
            "format": "double",
            "nullable": true
          },
          "holidayType": {
            "$ref": "#/components/schemas/HolidayType"
          },
          "accrueSetAmount": {
            "type": "boolean",
            "description": "If true and HolidayType is Accrual_Days then the AccruePaymentInLieuRate will be treated as the set amount to accrue per period worked."
          },
          "accrueHoursPerDay": {
            "type": "number",
            "description": "If HolidayType is Accrual_Days then this value is used to help convert hours worked into days accrued",
            "format": "double"
          },
          "showAllowanceOnPayslip": {
            "type": "boolean",
            "description": "If true then the remaining Allowance will be shown on the employees payslip."
          },
          "showAhpOnPayslip": {
            "type": "boolean",
            "description": "If true then the AHP balance will be shown on the employees payslip."
          },
          "accruePaymentInLieuRate": {
            "type": "number",
            "description": "The rate at which Payments in Lieu acrrue. Typically this should be 12.07%.",
            "format": "double"
          },
          "accruePaymentInLieuAllGrossPay": {
            "type": "boolean",
            "description": "[Deprecated] Please use HolidayAccrualBasis instead.\r\nThis filed will be removed in a later release.",
            "deprecated": true
          },
          "accruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "Set to true if you want employees to be automatically paid any outstanding holiday pay"
          },
          "occupationalSicknessUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "accruedPaymentAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total accrued",
            "format": "double"
          },
          "accruedHoursAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total hours accrued",
            "format": "double"
          },
          "holidayAccrualBasis": {
            "$ref": "#/components/schemas/HolidayAccrual"
          },
          "holidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "useAggregatedServiceDate": {
            "type": "boolean"
          },
          "accruePayCodeSetUniqueId": {
            "type": "string",
            "description": "Pay code set to use for accruing holiday pay",
            "format": "uuid",
            "nullable": true
          },
          "maximumAccruePeriod": {
            "type": "number",
            "description": "The maximum number of hours capable of being accrued in a single period",
            "format": "double",
            "nullable": true
          },
          "holidayLeaveAccrualCustomRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "useDefaultHolidayAccrualDefaultRateType": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualDefaultRateType comes from the Employer record.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeLeaveSettingsResponse": {
        "type": "object",
        "properties": {
          "allowanceUsed": {
            "type": "number",
            "description": "[readonly] The number of days used from the allowance since last reset",
            "format": "double"
          },
          "allowanceUsedPreviousPeriod": {
            "type": "number",
            "description": "[readonly] The number of days used in the 12 months prior to the last reset",
            "format": "double"
          },
          "allowanceRemaining": {
            "type": "number",
            "description": "[readonly] The number of days remaining of the allowance until next reset",
            "format": "double",
            "readOnly": true
          },
          "accruedPaymentLiability": {
            "type": "number",
            "description": "[readonly] The total accrued payments for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedPaymentPaid": {
            "type": "number",
            "description": "[readonly] The Total amount paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedPaymentBalance": {
            "type": "number",
            "description": "[readonly] The balance of what is owed to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedHoursAmount": {
            "type": "number",
            "description": "[readonly] The total accrued hours for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedHoursPaid": {
            "type": "number",
            "description": "[readonly] The Total amount of hours paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedHoursBalance": {
            "type": "number",
            "description": "[readonly] The balance of hours owed to this employee in lieu of holidays",
            "format": "double",
            "readOnly": true
          },
          "holidayAccrualResetDate": {
            "type": "string",
            "description": "[readonly] This date is used to reset holiday accrual schemes (Accrual Money or Accrual Hours).",
            "format": "date",
            "nullable": true
          },
          "enhancedDaysAllowance": {
            "type": "number",
            "description": "The entitlement of enhanced holiday days for the employee.",
            "format": "double"
          },
          "enhancedDaysAdjustment": {
            "type": "number",
            "description": "Manual adjustment to enhanced days entitlement.",
            "format": "double"
          },
          "averageDaysAllowance": {
            "type": "number",
            "description": "The entitlement of average holiday days for the employee.",
            "format": "double"
          },
          "averageDaysAdjustment": {
            "type": "number",
            "description": "Manual adjustment to average days entitlement.",
            "format": "double"
          },
          "enhancedDaysTaken": {
            "type": "number",
            "description": "[readonly] The number of enhanced days taken by the employee.",
            "format": "double"
          },
          "enhancedDaysBalance": {
            "type": "number",
            "description": "[readonly] The balance of enhanced days available to the employee.",
            "format": "double",
            "readOnly": true
          },
          "averageDaysTaken": {
            "type": "number",
            "description": "[readonly] The number of average days taken by the employee.",
            "format": "double"
          },
          "averageDaysBalance": {
            "type": "number",
            "description": "[readonly] The balance of average days available to the employee.",
            "format": "double",
            "readOnly": true
          },
          "useDefaultHolidayType": {
            "type": "boolean",
            "description": "If true then the value for HolidayType comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowanceResetDate": {
            "type": "boolean",
            "description": "If true then the value for the AllowanceResetDate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowance": {
            "type": "boolean",
            "description": "If true then the value for the Allowance comes from the Employer record.\r\nThis property only appears if the LeaveSettings if a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieu": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuRate": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieuRate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuAllGrossPay": {
            "type": "boolean",
            "description": "[Deprecated] Please use UseUseDefaultHolidayAccrualBasis instead.\r\nThis filed will be removed in a later release.",
            "deprecated": true
          },
          "useDefaultHolidayAccrualBasis": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualBasis comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)",
            "nullable": true
          },
          "useDefaultAccruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccrueHoursPerDay": {
            "type": "boolean",
            "description": "If true then the value for AccrueHoursPerDay comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultMaximumAccruePeriod": {
            "type": "boolean",
            "description": "If true then the value for MaximumAccruePeriod comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "allowanceResetDate": {
            "type": "string",
            "description": "The date that the holiday allowance resets. Only the day/month part of the value is relevant.",
            "format": "date"
          },
          "allowance": {
            "type": "number",
            "description": "The number of days holiday an employee can take per year if HolidayType is Days.\r\nOtherwise this is readonly and gives you the number of days accrued since the last reset",
            "format": "double"
          },
          "adjustment": {
            "type": "number",
            "description": "Adjustment to number of hours/days/weeks holiday this employee can take per year.\r\nWill reset to 0 when the Allowance resets.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)",
            "format": "double",
            "nullable": true
          },
          "holidayType": {
            "$ref": "#/components/schemas/HolidayType"
          },
          "accrueSetAmount": {
            "type": "boolean",
            "description": "If true and HolidayType is Accrual_Days then the AccruePaymentInLieuRate will be treated as the set amount to accrue per period worked."
          },
          "accrueHoursPerDay": {
            "type": "number",
            "description": "If HolidayType is Accrual_Days then this value is used to help convert hours worked into days accrued",
            "format": "double"
          },
          "showAllowanceOnPayslip": {
            "type": "boolean",
            "description": "If true then the remaining Allowance will be shown on the employees payslip."
          },
          "showAhpOnPayslip": {
            "type": "boolean",
            "description": "If true then the AHP balance will be shown on the employees payslip."
          },
          "accruePaymentInLieuRate": {
            "type": "number",
            "description": "The rate at which Payments in Lieu acrrue. Typically this should be 12.07%.",
            "format": "double"
          },
          "accruePaymentInLieuAllGrossPay": {
            "type": "boolean",
            "description": "[Deprecated] Please use HolidayAccrualBasis instead.\r\nThis filed will be removed in a later release.",
            "deprecated": true
          },
          "accruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "Set to true if you want employees to be automatically paid any outstanding holiday pay"
          },
          "occupationalSicknessUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "accruedPaymentAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total accrued",
            "format": "double"
          },
          "accruedHoursAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total hours accrued",
            "format": "double"
          },
          "holidayAccrualBasis": {
            "$ref": "#/components/schemas/HolidayAccrual"
          },
          "holidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "useAggregatedServiceDate": {
            "type": "boolean"
          },
          "accruePayCodeSetUniqueId": {
            "type": "string",
            "description": "Pay code set to use for accruing holiday pay",
            "format": "uuid",
            "nullable": true
          },
          "maximumAccruePeriod": {
            "type": "number",
            "description": "The maximum number of hours capable of being accrued in a single period",
            "format": "double",
            "nullable": true
          },
          "holidayLeaveAccrualCustomRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "useDefaultHolidayAccrualDefaultRateType": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualDefaultRateType comes from the Employer record.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeNavigationResponse": {
        "type": "object",
        "properties": {
          "firstId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "lastId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "previousId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "nextId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "format": "int32"
          },
          "currentIndex": {
            "type": "integer",
            "format": "int32"
          },
          "currentId": {
            "type": "string",
            "format": "uuid"
          },
          "sortBy": {
            "$ref": "#/components/schemas/EmployeeSortBy"
          },
          "sortDescending": {
            "type": "boolean"
          },
          "deptCode": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/EmployeeStatus"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeePaymentsReportRequest": {
        "type": "object",
        "properties": {
          "ordinal": {
            "type": "integer",
            "description": "Ordinal number for the Pay Schedule.",
            "format": "int32"
          },
          "payCodes": {
            "type": "string",
            "description": "Comma-separated list of Pay Codes.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique id of the object",
            "format": "uuid"
          },
          "personalDetails": {
            "$ref": "#/components/schemas/Contract.PersonalDetailsResponse"
          },
          "employmentDetails": {
            "$ref": "#/components/schemas/Contract.EmploymentDetailsResponse"
          },
          "autoEnrolment": {
            "$ref": "#/components/schemas/Contract.AutoEnrolmentResponse"
          },
          "leaveSettings": {
            "$ref": "#/components/schemas/Contract.EmployeeLeaveSettingsResponse"
          },
          "rightToWork": {
            "$ref": "#/components/schemas/Contract.RightToWork"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/Contract.BankDetails"
          },
          "payOptions": {
            "$ref": "#/components/schemas/Contract.PayOptionsResponse"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/EmployeeStatus"
          },
          "aeNotEnroledWarning": {
            "type": "boolean"
          },
          "sourceSystemId": {
            "type": "string",
            "nullable": true
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "holidaySchemeUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "evcId": {
            "type": "string",
            "description": "If set then this will be used as the EmployeeIDFromProduct sent to EVC in place of the standard EmployeeId.",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Pension Scheme that will be used for this employee.",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeName": {
            "type": "string",
            "description": "The name of the Pension Scheme that will be used for this employee.",
            "nullable": true
          },
          "defaultWorkerGroupUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Worker Group that will be used for this employee.",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupName": {
            "type": "string",
            "description": "The name of the Worker Group that will be used for this employee.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeRoleAnalysisCategoryCodeRequest": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Analysis Category code",
            "nullable": true
          },
          "color": {
            "type": "string",
            "description": "Analysis Category code color",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Analysis Category code Title",
            "nullable": true
          },
          "weighting": {
            "type": "number",
            "description": "Weightage for analysis category code",
            "format": "double"
          },
          "analysisCategoryName": {
            "type": "string",
            "description": "Analysis category name for AnalysisCategory code",
            "nullable": true
          },
          "analysisCategoryPublicId": {
            "type": "string",
            "description": "Analysis category identifier",
            "format": "uuid"
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Return whether Employee Role is primary for not"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeRoleAnalysisCategoryCodeResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Employee Role Analysis Category Code identifier",
            "format": "uuid"
          },
          "code": {
            "type": "string",
            "description": "Analysis Category code",
            "nullable": true
          },
          "color": {
            "type": "string",
            "description": "Analysis Category code color",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Analysis Category code Title",
            "nullable": true
          },
          "weighting": {
            "type": "number",
            "description": "Weightage for analysis category code",
            "format": "double"
          },
          "analysisCategoryName": {
            "type": "string",
            "description": "Analysis category name for AnalysisCategory code",
            "nullable": true
          },
          "analysisCategoryPublicId": {
            "type": "string",
            "description": "Analysis category identifier",
            "format": "uuid"
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Return whether Employee Role is primary for not"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeRoleItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeRoleResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "jobTitle": {
            "type": "string",
            "description": "Job Title of the Role",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Set to True if this is Primary role of the Employee"
          },
          "reference": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "basis": {
            "$ref": "#/components/schemas/RoleBasis"
          },
          "type": {
            "$ref": "#/components/schemas/RoleType"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "payOptions": {
            "$ref": "#/components/schemas/Contract.PayOptionsBaseResponse"
          },
          "workingPattern": {
            "$ref": "#/components/schemas/Contract.WorkingPatternResponse"
          },
          "occupationalMaternityPolicyUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "occupationalSicknessPolicyUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeRoleWorkingPatternRequest": {
        "type": "object",
        "properties": {
          "effectiveFrom": {
            "type": "string",
            "description": "The date when the assignment of the Working Pattern becomes effective.",
            "format": "date"
          },
          "workingPatternUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Working Pattern.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeRoleWorkingPatternResponse": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "The UniqueId of the model.",
            "format": "uuid"
          },
          "effectiveTo": {
            "type": "string",
            "description": "[readonly] The date when the assignment of the Working Pattern effectiveness ends. Populated automatically based on working pattern effectiveFrom dates.",
            "format": "date"
          },
          "workingPattern": {
            "$ref": "#/components/schemas/Contract.WorkingPatternResponse"
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date when the assignment of the Working Pattern becomes effective.",
            "format": "date"
          },
          "workingPatternUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Working Pattern.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeRoleWorkingPatternResponseItem": {
        "type": "object",
        "properties": {
          "workingPatternId": {
            "type": "string",
            "description": "The unique id of the working pattern.",
            "format": "uuid"
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date when the assignment of the Working Pattern becomes effective.",
            "format": "date"
          },
          "effectiveTo": {
            "type": "string",
            "description": "[readonly] The date when the assignment of the Working Pattern effectiveness ends. Populated automatically based on working pattern effectiveFrom dates.",
            "format": "date",
            "nullable": true
          },
          "totalHours": {
            "type": "number",
            "description": "[readonly] The amount of hours per working pattern.",
            "format": "double"
          },
          "contractedWeeks": {
            "type": "number",
            "description": "[readonly] The amount of weeks an employee works, utilise for employees who aren't working full time.\r\nIf Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "The title of the working pattern.",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployeeSupplementaryPayRunResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.EmployeeItem"
            },
            "description": "List of employee items.",
            "nullable": true
          },
          "totalItems": {
            "type": "integer",
            "description": "Value indicating the total number of items.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployerBase": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "uniqueId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployerLeaveSettingsRequest": {
        "type": "object",
        "properties": {
          "useDefaultHolidayType": {
            "type": "boolean",
            "description": "If true then the value for HolidayType comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowanceResetDate": {
            "type": "boolean",
            "description": "If true then the value for the AllowanceResetDate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowance": {
            "type": "boolean",
            "description": "If true then the value for the Allowance comes from the Employer record.\r\nThis property only appears if the LeaveSettings if a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieu": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuRate": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieuRate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultHolidayAccrualBasis": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualBasis comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccrueHoursPerDay": {
            "type": "boolean",
            "description": "If true then the value for AccrueHoursPerDay comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultMaximumAccruePeriod": {
            "type": "boolean",
            "description": "If true then the value for MaximumAccruePeriod comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "allowanceResetDate": {
            "type": "string",
            "description": "The date that the holiday allowance resets. Only the day/month part of the value is relevant.",
            "format": "date"
          },
          "allowance": {
            "type": "number",
            "description": "The number of days holiday an employee can take per year if HolidayType is Days.\r\nOtherwise this is readonly and gives you the number of days accrued since the last reset",
            "format": "double"
          },
          "adjustment": {
            "type": "number",
            "description": "Adjustment to number of hours/days/weeks holiday this employee can take per year.\r\nWill reset to 0 when the Allowance resets.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)",
            "format": "double",
            "nullable": true
          },
          "allowanceUsed": {
            "type": "number",
            "description": "[readonly] The number of days used from the allowance since last reset",
            "format": "double"
          },
          "allowanceUsedPreviousPeriod": {
            "type": "number",
            "description": "[readonly] The number of days used in the 12 months prior to the last reset",
            "format": "double"
          },
          "allowanceRemaining": {
            "type": "number",
            "description": "[readonly] The number of days remaining of the allowance until next reset",
            "format": "double",
            "readOnly": true
          },
          "holidayType": {
            "$ref": "#/components/schemas/HolidayType"
          },
          "accrueSetAmount": {
            "type": "boolean",
            "description": "If true and HolidayType is Accrual_Days then the AccruePaymentInLieuRate will be treated as the set amount to accrue per period worked."
          },
          "accrueHoursPerDay": {
            "type": "number",
            "description": "If HolidayType is Accrual_Days then this value is used to help convert hours worked into days accrued",
            "format": "double"
          },
          "showAllowanceOnPayslip": {
            "type": "boolean",
            "description": "If true then the remaining Allowance will be shown on the employees payslip."
          },
          "showAhpOnPayslip": {
            "type": "boolean",
            "description": "If true then the AHP balance will be shown on the employees payslip."
          },
          "accruePaymentInLieuRate": {
            "type": "number",
            "description": "The rate at which Payments in Lieu acrrue. Typically this should be 12.07%.",
            "format": "double"
          },
          "accruePaymentInLieuAllGrossPay": {
            "type": "boolean",
            "description": "Set to true if you want accrued holiday payments to be calculated on the total gross pay for the employee or just on the single regular pay element"
          },
          "accruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "Set to true if you want employees to be automatically paid any outstanding holiday pay"
          },
          "accruePayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "maximumAccruePeriod": {
            "type": "number",
            "description": "The maximum number of hours capable of being accrued in a single period",
            "format": "double",
            "nullable": true
          },
          "holidayAccrualBasis": {
            "$ref": "#/components/schemas/HolidayAccrual"
          },
          "holidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "occupationalSicknessUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "accruedPaymentLiability": {
            "type": "number",
            "description": "[readonly] The total accrued payments for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedPaymentAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total accrued",
            "format": "double"
          },
          "accruedPaymentPaid": {
            "type": "number",
            "description": "[readonly] The Total amount paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedPaymentBalance": {
            "type": "number",
            "description": "[readonly] The balance of what is owed to this employee in lieu of holidays",
            "format": "double",
            "readOnly": true
          },
          "accruedHoursAmount": {
            "type": "number",
            "description": "[readonly] The total accrued hours for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedHoursAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total hours accrued",
            "format": "double"
          },
          "accruedHoursPaid": {
            "type": "number",
            "description": "[readonly] The Total amount of hours paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedHoursAmountLastPeriod": {
            "type": "number",
            "description": "[readonly] The total accrued hours for this employee in the last pay period",
            "format": "double"
          },
          "paidHoursAmountLastPeriod": {
            "type": "number",
            "description": "[readonly] The number of hours paid against the pay code",
            "format": "double"
          },
          "accruedHoursBalance": {
            "type": "number",
            "description": "[readonly] The balance of hours owed to this employee in lieu of holidays",
            "format": "double",
            "readOnly": true
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "useAggregatedServiceDate": {
            "type": "boolean"
          },
          "useDefaultHolidayAccrualDefaultRateType": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualDefaultRateType comes from the Employer record."
          },
          "unauthorisedLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "holidayLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "sickLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "parentalLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "bereavementLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "isEnhancedHolidayScheme": {
            "type": "boolean",
            "description": "If true then the employee is using an enhanced holiday scheme where allowance is split between enhanced and non-enhanced days."
          },
          "isOffsetBasicPay": {
            "type": "boolean",
            "description": "If true then basic pay should be offset when calculating enhanced holiday pay."
          },
          "enhancedDaysAllowance": {
            "type": "number",
            "description": "The number of enhanced holiday days.",
            "format": "double"
          },
          "averageDaysAllowance": {
            "type": "number",
            "description": "The number of non-enhanced holiday days.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployerLeaveSettingsResponse": {
        "type": "object",
        "properties": {
          "useDefaultHolidayType": {
            "type": "boolean",
            "description": "If true then the value for HolidayType comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowanceResetDate": {
            "type": "boolean",
            "description": "If true then the value for the AllowanceResetDate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowance": {
            "type": "boolean",
            "description": "If true then the value for the Allowance comes from the Employer record.\r\nThis property only appears if the LeaveSettings if a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieu": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuRate": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieuRate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultHolidayAccrualBasis": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualBasis comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccrueHoursPerDay": {
            "type": "boolean",
            "description": "If true then the value for AccrueHoursPerDay comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultMaximumAccruePeriod": {
            "type": "boolean",
            "description": "If true then the value for MaximumAccruePeriod comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "allowanceResetDate": {
            "type": "string",
            "description": "The date that the holiday allowance resets. Only the day/month part of the value is relevant.",
            "format": "date"
          },
          "allowance": {
            "type": "number",
            "description": "The number of days holiday an employee can take per year if HolidayType is Days.\r\nOtherwise this is readonly and gives you the number of days accrued since the last reset",
            "format": "double"
          },
          "adjustment": {
            "type": "number",
            "description": "Adjustment to number of hours/days/weeks holiday this employee can take per year.\r\nWill reset to 0 when the Allowance resets.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)",
            "format": "double",
            "nullable": true
          },
          "allowanceUsed": {
            "type": "number",
            "description": "[readonly] The number of days used from the allowance since last reset",
            "format": "double"
          },
          "allowanceUsedPreviousPeriod": {
            "type": "number",
            "description": "[readonly] The number of days used in the 12 months prior to the last reset",
            "format": "double"
          },
          "allowanceRemaining": {
            "type": "number",
            "description": "[readonly] The number of days remaining of the allowance until next reset",
            "format": "double"
          },
          "holidayType": {
            "$ref": "#/components/schemas/HolidayType"
          },
          "accrueSetAmount": {
            "type": "boolean",
            "description": "If true and HolidayType is Accrual_Days then the AccruePaymentInLieuRate will be treated as the set amount to accrue per period worked."
          },
          "accrueHoursPerDay": {
            "type": "number",
            "description": "If HolidayType is Accrual_Days then this value is used to help convert hours worked into days accrued",
            "format": "double"
          },
          "showAllowanceOnPayslip": {
            "type": "boolean",
            "description": "If true then the remaining Allowance will be shown on the employees payslip."
          },
          "showAhpOnPayslip": {
            "type": "boolean",
            "description": "If true then the AHP balance will be shown on the employees payslip."
          },
          "accruePaymentInLieuRate": {
            "type": "number",
            "description": "The rate at which Payments in Lieu acrrue. Typically this should be 12.07%.",
            "format": "double"
          },
          "accruePaymentInLieuAllGrossPay": {
            "type": "boolean",
            "description": "Set to true if you want accrued holiday payments to be calculated on the total gross pay for the employee or just on the single regular pay element"
          },
          "accruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "Set to true if you want employees to be automatically paid any outstanding holiday pay"
          },
          "accruePayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "maximumAccruePeriod": {
            "type": "number",
            "description": "The maximum number of hours capable of being accrued in a single period",
            "format": "double",
            "nullable": true
          },
          "holidayAccrualBasis": {
            "$ref": "#/components/schemas/HolidayAccrual"
          },
          "holidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "occupationalSicknessUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "accruedPaymentLiability": {
            "type": "number",
            "description": "[readonly] The total accrued payments for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedPaymentAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total accrued",
            "format": "double"
          },
          "accruedPaymentPaid": {
            "type": "number",
            "description": "[readonly] The Total amount paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedPaymentBalance": {
            "type": "number",
            "description": "[readonly] The balance of what is owed to this employee in lieu of holidays",
            "format": "double",
            "readOnly": true
          },
          "accruedHoursAmount": {
            "type": "number",
            "description": "[readonly] The total accrued hours for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedHoursAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total hours accrued",
            "format": "double"
          },
          "accruedHoursPaid": {
            "type": "number",
            "description": "[readonly] The Total amount of hours paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedHoursAmountLastPeriod": {
            "type": "number",
            "description": "[readonly] The total accrued hours for this employee in the last pay period",
            "format": "double"
          },
          "paidHoursAmountLastPeriod": {
            "type": "number",
            "description": "[readonly] The number of hours paid against the pay code",
            "format": "double"
          },
          "accruedHoursBalance": {
            "type": "number",
            "description": "[readonly] The balance of hours owed to this employee in lieu of holidays",
            "format": "double"
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "useAggregatedServiceDate": {
            "type": "boolean"
          },
          "useDefaultHolidayAccrualDefaultRateType": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualDefaultRateType comes from the Employer record."
          },
          "unauthorisedLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "holidayLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "sickLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "parentalLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "bereavementLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "isEnhancedHolidayScheme": {
            "type": "boolean",
            "description": "If true then the employee is using an enhanced holiday scheme where allowance is split between enhanced and non-enhanced days."
          },
          "isOffsetBasicPay": {
            "type": "boolean",
            "description": "If true then basic pay should be offset when calculating enhanced holiday pay."
          },
          "enhancedDaysAllowance": {
            "type": "number",
            "description": "The number of enhanced holiday days.",
            "format": "double"
          },
          "averageDaysAllowance": {
            "type": "number",
            "description": "The number of non-enhanced holiday days.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployerRequest": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/Contract.SharedBankDetails"
          },
          "defaultPayOptions": {
            "$ref": "#/components/schemas/Contract.PayOptionsRequest"
          },
          "hmrcDetails": {
            "$ref": "#/components/schemas/Contract.HmrcDetailsRequest"
          },
          "defaultPension": {
            "$ref": "#/components/schemas/Contract.PensionSelectionRequest"
          },
          "rtiSubmissionSettings": {
            "$ref": "#/components/schemas/Contract.RtiSubmissionSettingsRequest"
          },
          "leaveSettings": {
            "$ref": "#/components/schemas/Contract.EmployerLeaveSettingsRequest"
          },
          "settings": {
            "$ref": "#/components/schemas/Contract.EmployerSettingsRequest"
          },
          "umbrellaSettings": {
            "$ref": "#/components/schemas/Contract.UmbrellaSettingsRequest"
          },
          "autoEnrolmentSettings": {
            "$ref": "#/components/schemas/Contract.AutoEnrolmentSettingsRequest"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sourceSystemId": {
            "type": "string",
            "description": "[readonly] Can only be given a value when the employer is created. It can then never be changed.\r\nUsed by external systems so they can store an immutable reference",
            "nullable": true
          },
          "crn": {
            "type": "string",
            "description": "Company Registration Number",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "logoSasUrl": {
            "type": "string",
            "nullable": true
          },
          "alternativeId": {
            "type": "string",
            "nullable": true
          },
          "bankPaymentsCsvFormat": {
            "$ref": "#/components/schemas/BankPaymentInstructionsCsvFormat"
          },
          "bacsServiceUserNumber": {
            "type": "string",
            "nullable": true
          },
          "bacsBureauNumber": {
            "type": "string",
            "nullable": true
          },
          "rejectInvalidBankDetails": {
            "type": "boolean"
          },
          "bankPaymentsReferenceFormat": {
            "type": "string",
            "nullable": true
          },
          "bacsIncludeAEO": {
            "type": "boolean"
          },
          "bacsIncludeDeductions": {
            "type": "boolean"
          },
          "bacsIncludeHmrc": {
            "type": "boolean"
          },
          "bacsIncludePensions": {
            "type": "boolean"
          },
          "useTenantRtiSubmissionSettings": {
            "type": "boolean",
            "description": "If the Tenant for this employer has Bureau Features enabled then they can set RtiSubmissionSettings to be used across multiple employers.\r\nIf this is set to true then those settings will be used instead of any set at the Employer level"
          },
          "accruePayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "description": "[readonly] The number of Employees this Employer has, including CIS Subcontractors.",
            "format": "int32"
          },
          "subcontractorCount": {
            "type": "integer",
            "description": "[readonly] The number of CIS Subcontractors this Employer has.",
            "format": "int32"
          },
          "startYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "currentYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "supportAccessEnabled": {
            "type": "boolean",
            "description": "[Deprecated] If set to true then the support team can access this employer to help resolve support queries.\r\nIf SupportAccessExpires is not provided support access will be turned off after 30 days.",
            "deprecated": true
          },
          "supportAccessExpires": {
            "type": "string",
            "description": "The date and time when the support access expires",
            "format": "date",
            "nullable": true
          },
          "archived": {
            "type": "boolean",
            "description": "A flag to indicate whather or not the employer is Archived, ie no longer actively used"
          },
          "canUseBureauFeatures": {
            "type": "boolean"
          },
          "multiRoleEnabled": {
            "type": "boolean"
          },
          "educationPayrollEnabled": {
            "type": "boolean"
          },
          "effectiveDateWorkingPatternsEnabled": {
            "type": "boolean"
          },
          "backPayEnabled": {
            "type": "boolean"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "isOptedInToEvc": {
            "type": "boolean",
            "description": "[readonly] Indicates whether or not the Employer is opted in to the Employee Verification Programme.\r\nValue can only be changed by its dedicated API end point."
          },
          "evcId": {
            "type": "string",
            "description": "If set then this will be used as the Employer ID sent to EVC in place of the standard EmployerId.",
            "format": "uuid",
            "nullable": true
          },
          "holidayAccrualBasis": {
            "$ref": "#/components/schemas/HolidayAccrual"
          },
          "holidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "mfaEnabled": {
            "type": "boolean",
            "description": "if set to true requires all users to setup MFA\r\nsupport queries"
          },
          "departmentJournalOverridesEnabled": {
            "type": "boolean",
            "description": "Enables the journal overrides for departments, if set to true."
          },
          "costCentreJournalOverridesEnabled": {
            "type": "boolean",
            "description": "Enables the journal overrides for cost centre, if set to true."
          },
          "settingsSortPayrollNumbersAlphanumerically": {
            "type": "boolean",
            "description": "Enables the default sorting to be alphanumerically for payroll code, if set to true else numerical sorting will be applied"
          },
          "unauthorisedLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "holidayLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "sickLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "parentalLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "bereavementLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "betaFeatures": {
            "$ref": "#/components/schemas/EmployerBetaFeatures"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployerResponse": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/Contract.SharedBankDetails"
          },
          "defaultPayOptions": {
            "$ref": "#/components/schemas/Contract.PayOptionsResponse"
          },
          "hmrcDetails": {
            "$ref": "#/components/schemas/Contract.HmrcDetailsResponse"
          },
          "defaultPension": {
            "$ref": "#/components/schemas/Contract.PensionSelectionResponse"
          },
          "rtiSubmissionSettings": {
            "$ref": "#/components/schemas/Contract.RtiSubmissionSettingsResponse"
          },
          "leaveSettings": {
            "$ref": "#/components/schemas/Contract.EmployerLeaveSettingsResponse"
          },
          "settings": {
            "$ref": "#/components/schemas/Contract.EmployerSettingsResponse"
          },
          "umbrellaSettings": {
            "$ref": "#/components/schemas/Contract.UmbrellaSettingsResponse"
          },
          "autoEnrolmentSettings": {
            "$ref": "#/components/schemas/Contract.AutoEnrolmentSettingsResponse"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sourceSystemId": {
            "type": "string",
            "description": "[readonly] Can only be given a value when the employer is created. It can then never be changed.\r\nUsed by external systems so they can store an immutable reference",
            "nullable": true
          },
          "crn": {
            "type": "string",
            "description": "Company Registration Number",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "logoSasUrl": {
            "type": "string",
            "nullable": true
          },
          "alternativeId": {
            "type": "string",
            "nullable": true
          },
          "bankPaymentsCsvFormat": {
            "$ref": "#/components/schemas/BankPaymentInstructionsCsvFormat"
          },
          "bacsServiceUserNumber": {
            "type": "string",
            "nullable": true
          },
          "bacsBureauNumber": {
            "type": "string",
            "nullable": true
          },
          "rejectInvalidBankDetails": {
            "type": "boolean"
          },
          "bankPaymentsReferenceFormat": {
            "type": "string",
            "nullable": true
          },
          "bacsIncludeAEO": {
            "type": "boolean"
          },
          "bacsIncludeDeductions": {
            "type": "boolean"
          },
          "bacsIncludeHmrc": {
            "type": "boolean"
          },
          "bacsIncludePensions": {
            "type": "boolean"
          },
          "useTenantRtiSubmissionSettings": {
            "type": "boolean",
            "description": "If the Tenant for this employer has Bureau Features enabled then they can set RtiSubmissionSettings to be used across multiple employers.\r\nIf this is set to true then those settings will be used instead of any set at the Employer level"
          },
          "accruePayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "description": "The default LeaveSettings. Only the Allowance and AllowanceResetDate fields are used.",
            "format": "int32"
          },
          "subcontractorCount": {
            "type": "integer",
            "description": "[readonly] The number of CIS Subcontractors this Employer has.",
            "format": "int32"
          },
          "startYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "currentYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "supportAccessEnabled": {
            "type": "boolean",
            "description": "[Deprecated] If set to true then the support team can access this employer to help resolve support queries.\r\nIf SupportAccessExpires is not provided support access will be turned off after 30 days.",
            "deprecated": true
          },
          "supportAccessExpires": {
            "type": "string",
            "description": "The date and time when the support access expires",
            "format": "date",
            "nullable": true
          },
          "archived": {
            "type": "boolean",
            "description": "A flag to indicate whather or not the employer is Archived, ie no longer actively used"
          },
          "canUseBureauFeatures": {
            "type": "boolean"
          },
          "multiRoleEnabled": {
            "type": "boolean"
          },
          "educationPayrollEnabled": {
            "type": "boolean"
          },
          "effectiveDateWorkingPatternsEnabled": {
            "type": "boolean"
          },
          "backPayEnabled": {
            "type": "boolean"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "isOptedInToEvc": {
            "type": "boolean",
            "description": "[readonly] Indicates whether or not the Employer is opted in to the Employee Verification Programme.\r\nValue can only be changed by its dedicated API end point."
          },
          "evcId": {
            "type": "string",
            "description": "If set then this will be used as the Employer ID sent to EVC in place of the standard EmployerId.",
            "format": "uuid",
            "nullable": true
          },
          "holidayAccrualBasis": {
            "$ref": "#/components/schemas/HolidayAccrual"
          },
          "holidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "mfaEnabled": {
            "type": "boolean",
            "description": "if set to true requires all users to setup MFA\r\nsupport queries"
          },
          "departmentJournalOverridesEnabled": {
            "type": "boolean",
            "description": "Enables the journal overrides for departments, if set to true."
          },
          "costCentreJournalOverridesEnabled": {
            "type": "boolean",
            "description": "Enables the journal overrides for cost centre, if set to true."
          },
          "settingsSortPayrollNumbersAlphanumerically": {
            "type": "boolean",
            "description": "Enables the default sorting to be alphanumerically for payroll code, if set to true else numerical sorting will be applied"
          },
          "unauthorisedLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "holidayLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "sickLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "parentalLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "bereavementLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "betaFeatures": {
            "$ref": "#/components/schemas/EmployerBetaFeatures"
          },
          "canUsePremiumConnectors": {
            "type": "boolean",
            "description": "Indicates whether the employer has permission to use the premium connectors feature."
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployerSettingsRequest": {
        "type": "object",
        "properties": {
          "allowNegativePay": {
            "type": "boolean"
          },
          "manualStatutoryPayLinesEnabled": {
            "type": "boolean"
          },
          "mergeMatchingNominalsEnabled": {
            "type": "boolean"
          },
          "autoCalcBackPayForNewStarters": {
            "type": "boolean"
          },
          "payCodeValidationEnabled": {
            "type": "boolean"
          },
          "calculateEffectiveDateSalaryChanges": {
            "type": "boolean"
          },
          "groupPayLinesEnabled": {
            "type": "boolean",
            "description": "A flag to indicate whether paylines should be grouped. The grouping is done based on the following PayLine properties: Rate, Multiplier, Code, Description and RoleId"
          },
          "contractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works, utilise for employees who aren't working full time.\r\nThis value is the default which can be inherited when creating/updating a WorkingPattern.",
            "format": "double"
          },
          "fullTimeContractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works (Full Time).\r\nThis value is the default which can be inherited when creating/updating a WorkingPattern.",
            "format": "double"
          },
          "fullTimeContractedHours": {
            "type": "number",
            "description": "The amount of hours an employee works (Full Time).\r\nThis value is the default which can be inherited when creating/updating a WorkingPattern.",
            "format": "double"
          },
          "disabledPayRunWarningsList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayRunEntryWarningType"
            },
            "description": "Pay run warnings that the user has opted to ignore.",
            "nullable": true
          },
          "journalCsvFormat": {
            "$ref": "#/components/schemas/JournalCsvFormat"
          },
          "preferAsyncPayrunApiCalls": {
            "type": "boolean",
            "description": "This setting is only available temporarily and is only setable by users with access to beta features enabled.\r\nIf set to true the the web applicaiton will use new async API calls for managing payruns"
          },
          "nominalMappingsEnabled": {
            "type": "boolean",
            "description": "Enables the nominal mappings(Custom Codes,System Codes,Control Codes,Employer Codes) for the employer, if set to true."
          },
          "sortPayrollNumbersAlphanumerically": {
            "type": "boolean",
            "description": "Enables the default sorting to be alphanumerically for payroll code, if set to true else numerical sorting will be applied"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmployerSettingsResponse": {
        "type": "object",
        "properties": {
          "allowNegativePay": {
            "type": "boolean"
          },
          "manualStatutoryPayLinesEnabled": {
            "type": "boolean"
          },
          "mergeMatchingNominalsEnabled": {
            "type": "boolean"
          },
          "autoCalcBackPayForNewStarters": {
            "type": "boolean"
          },
          "payCodeValidationEnabled": {
            "type": "boolean"
          },
          "calculateEffectiveDateSalaryChanges": {
            "type": "boolean"
          },
          "groupPayLinesEnabled": {
            "type": "boolean",
            "description": "A flag to indicate whether paylines should be grouped. The grouping is done based on the following PayLine properties: Rate, Multiplier, Code, Description and RoleId"
          },
          "contractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works, utilise for employees who aren't working full time.\r\nThis value is the default which can be inherited when creating/updating a WorkingPattern.",
            "format": "double"
          },
          "fullTimeContractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works (Full Time).\r\nThis value is the default which can be inherited when creating/updating a WorkingPattern.",
            "format": "double"
          },
          "fullTimeContractedHours": {
            "type": "number",
            "description": "The amount of hours an employee works (Full Time).\r\nThis value is the default which can be inherited when creating/updating a WorkingPattern.",
            "format": "double"
          },
          "disabledPayRunWarningsBitmask": {
            "type": "integer",
            "format": "int32"
          },
          "disabledPayRunWarningsList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayRunEntryWarningType"
            },
            "description": "Pay run warnings that the user has opted to ignore.",
            "nullable": true
          },
          "journalCsvFormat": {
            "$ref": "#/components/schemas/JournalCsvFormat"
          },
          "preferAsyncPayrunApiCalls": {
            "type": "boolean",
            "description": "This setting is only available temporarily and is only setable by users with access to beta features enabled.\r\nIf set to true the the web applicaiton will use new async API calls for managing payruns"
          },
          "nominalMappingsEnabled": {
            "type": "boolean",
            "description": "Enables the nominal mappings(Custom Codes,System Codes,Control Codes,Employer Codes) for the employer, if set to true."
          },
          "sortPayrollNumbersAlphanumerically": {
            "type": "boolean",
            "description": "Enables the default sorting to be alphanumerically for payroll code, if set to true else numerical sorting will be applied"
          }
        },
        "additionalProperties": false
      },
      "Contract.EmploymentDetailsRequest": {
        "required": [
          "payrollCode"
        ],
        "type": "object",
        "properties": {
          "cis": {
            "$ref": "#/components/schemas/Contract.CisDetailsRequest"
          },
          "department": {
            "$ref": "#/components/schemas/Contract.DepartmentRequest"
          },
          "cisSubContractor": {
            "type": "boolean",
            "description": "Set to True if this Employee is a CIS Subcontractor. The ```Cis``` property contains further information"
          },
          "payrollCode": {
            "maxLength": 35,
            "minLength": 1,
            "type": "string",
            "description": "The Employees Payroll Code. Must be unique within the Employer."
          },
          "jobTitle": {
            "maxLength": 120,
            "type": "string",
            "description": "Job Title of Primary role of the Employee",
            "nullable": true
          },
          "workplacePostcode": {
            "maxLength": 10,
            "type": "string",
            "description": "Set the workplace postcode, ensuring it is no longer than 10 characters.",
            "nullable": true
          },
          "onHold": {
            "type": "boolean",
            "description": "Set to true to temporarily exclude the employee from payruns"
          },
          "onFurlough": {
            "type": "boolean",
            "description": "Set to true if the employee is on furlough."
          },
          "furloughStart": {
            "type": "string",
            "description": "Furlough Start Date.",
            "format": "date",
            "nullable": true
          },
          "furloughEnd": {
            "type": "string",
            "description": "Furlough End Date.",
            "format": "date",
            "nullable": true
          },
          "furloughCalculationBasis": {
            "$ref": "#/components/schemas/FurloughCalculationBasis"
          },
          "furloughCalculationBasisAmount": {
            "type": "number",
            "format": "double"
          },
          "partialFurlough": {
            "type": "boolean",
            "description": "Set to true if the employee is partially furloughed."
          },
          "furloughHoursNormallyWorked": {
            "type": "number",
            "format": "double"
          },
          "furloughHoursOnFurlough": {
            "type": "number",
            "format": "double"
          },
          "isApprentice": {
            "type": "boolean",
            "description": "Set to True if this Employee is an apprentice. This affects the calculations for National Minimum Wage"
          },
          "apprenticeshipStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "apprenticeshipEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "workingPattern": {
            "type": "string",
            "description": "Used when calculating payments for Leave.\r\nIf null then the default Working Pattern is used",
            "format": "uuid",
            "nullable": true
          },
          "forcePreviousPayrollCode": {
            "maxLength": 35,
            "type": "string",
            "description": "If this property has a non-empty value then a change of Payroll code will be declared on the next FPS.",
            "nullable": true
          },
          "starterDetails": {
            "$ref": "#/components/schemas/Contract.StarterDetails"
          },
          "directorshipDetails": {
            "$ref": "#/components/schemas/Contract.DirectorshipDetails"
          },
          "leaverDetails": {
            "$ref": "#/components/schemas/Contract.LeaverDetails"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.EmployeeRoleItem"
            },
            "description": "List of Roles held by Employee",
            "nullable": true
          },
          "isWorkingInFreePort": {
            "type": "boolean",
            "description": "Flag indicating the employee is employed in a Freeport"
          },
          "isWorkingInInvestmentZone": {
            "type": "boolean",
            "description": "Flag indicating the employee is employed in an Investment Zone"
          },
          "veteranDetails": {
            "$ref": "#/components/schemas/Contract.VeteranDetails"
          },
          "continuousEmploymentDate": {
            "type": "string",
            "description": "Date of continuous employment",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.EmploymentDetailsResponse": {
        "required": [
          "payrollCode"
        ],
        "type": "object",
        "properties": {
          "cis": {
            "$ref": "#/components/schemas/Contract.CisDetailsResponse"
          },
          "department": {
            "$ref": "#/components/schemas/Contract.DepartmentResponse"
          },
          "includeSecondedInfoOnStarter": {
            "type": "boolean"
          },
          "cisSubContractor": {
            "type": "boolean",
            "description": "Set to True if this Employee is a CIS Subcontractor. The ```Cis``` property contains further information"
          },
          "payrollCode": {
            "maxLength": 35,
            "minLength": 1,
            "type": "string",
            "description": "The Employees Payroll Code. Must be unique within the Employer."
          },
          "jobTitle": {
            "maxLength": 120,
            "type": "string",
            "description": "Job Title of Primary role of the Employee",
            "nullable": true
          },
          "workplacePostcode": {
            "maxLength": 10,
            "type": "string",
            "description": "Set the workplace postcode, ensuring it is no longer than 10 characters.",
            "nullable": true
          },
          "onHold": {
            "type": "boolean",
            "description": "Set to true to temporarily exclude the employee from payruns"
          },
          "onFurlough": {
            "type": "boolean",
            "description": "Set to true if the employee is on furlough."
          },
          "furloughStart": {
            "type": "string",
            "description": "Furlough Start Date.",
            "format": "date",
            "nullable": true
          },
          "furloughEnd": {
            "type": "string",
            "description": "Furlough End Date.",
            "format": "date",
            "nullable": true
          },
          "furloughCalculationBasis": {
            "$ref": "#/components/schemas/FurloughCalculationBasis"
          },
          "furloughCalculationBasisAmount": {
            "type": "number",
            "format": "double"
          },
          "partialFurlough": {
            "type": "boolean",
            "description": "Set to true if the employee is partially furloughed."
          },
          "furloughHoursNormallyWorked": {
            "type": "number",
            "format": "double"
          },
          "furloughHoursOnFurlough": {
            "type": "number",
            "format": "double"
          },
          "isApprentice": {
            "type": "boolean",
            "description": "Set to True if this Employee is an apprentice. This affects the calculations for National Minimum Wage"
          },
          "apprenticeshipStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "apprenticeshipEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "workingPattern": {
            "type": "string",
            "description": "Used when calculating payments for Leave.\r\nIf null then the default Working Pattern is used",
            "format": "uuid",
            "nullable": true
          },
          "forcePreviousPayrollCode": {
            "maxLength": 35,
            "type": "string",
            "description": "If this property has a non-empty value then a change of Payroll code will be declared on the next FPS.",
            "nullable": true
          },
          "starterDetails": {
            "$ref": "#/components/schemas/Contract.StarterDetails"
          },
          "directorshipDetails": {
            "$ref": "#/components/schemas/Contract.DirectorshipDetails"
          },
          "leaverDetails": {
            "$ref": "#/components/schemas/Contract.LeaverDetails"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.EmployeeRoleItem"
            },
            "description": "List of Roles held by Employee",
            "nullable": true
          },
          "isWorkingInFreePort": {
            "type": "boolean",
            "description": "Flag indicating the employee is employed in a Freeport"
          },
          "isWorkingInInvestmentZone": {
            "type": "boolean",
            "description": "Flag indicating the employee is employed in an Investment Zone"
          },
          "veteranDetails": {
            "$ref": "#/components/schemas/Contract.VeteranDetails"
          },
          "continuousEmploymentDate": {
            "type": "string",
            "description": "Date of continuous employment",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.ExternalDataCompanyRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "schemeName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.ExternalDataCompanyResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "schemeName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.FpsFields": {
        "type": "object",
        "properties": {
          "offPayrollWorker": {
            "type": "boolean"
          },
          "irregularPaymentPattern": {
            "type": "boolean",
            "description": "True if employee is currently on an irregular payment patter"
          },
          "nonIndividual": {
            "type": "boolean",
            "description": "True if Employee's payments are being made to a body (eg, trustee, corporate organisation or personal representative)"
          },
          "excludeFromRtiSubmissions": {
            "type": "boolean",
            "description": "True if Employee is excluded from RTI submissions"
          },
          "hoursNormallyWorked": {
            "$ref": "#/components/schemas/HoursNormallyWorked"
          }
        },
        "additionalProperties": false
      },
      "Contract.HmrcDetailsRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "officeNumber": {
            "type": "string",
            "nullable": true
          },
          "payeReference": {
            "type": "string",
            "nullable": true
          },
          "accountsOfficeReference": {
            "type": "string",
            "nullable": true
          },
          "econ": {
            "type": "string",
            "nullable": true
          },
          "utr": {
            "type": "string",
            "nullable": true
          },
          "coTax": {
            "type": "string",
            "nullable": true
          },
          "employmentAllowance": {
            "type": "boolean"
          },
          "employmentAllowanceMaxClaim": {
            "type": "number",
            "description": "You might reduce this from the default if you've made/are making a claim in another system",
            "format": "double"
          },
          "smallEmployersRelief": {
            "type": "boolean"
          },
          "apprenticeshipLevy": {
            "type": "boolean"
          },
          "apprenticeshipLevyAllowance": {
            "type": "number",
            "format": "double"
          },
          "quarterlyPaymentSchedule": {
            "type": "boolean",
            "description": "Set to true if the employer pays HMRC on a quarterly schedule.\r\nA value of false implies a monthly schedule.\r\n<b>Warning:</b> Changing this value after starting PayRuns will\r\ndelete any existing payments or adjustments you may have entered."
          },
          "includeEmploymentAllowanceOnMonthlyJournal": {
            "type": "boolean",
            "description": "If the employer is not on a QuarterlyPaymentSchedule\r\nand is claiming EmploymentAllowance, then set this to true to include a line for\r\nEmployment Allowance on the journal for the monthly schedule."
          },
          "carryForwardUnpaidLiabilities": {
            "type": "boolean",
            "description": "If set to true then any unpaid amounts from previous periods will be brought forward\r\nto work out the liability for the current period.\r\nYou'd set this to false if you don't want to track payments."
          },
          "paymentDateRule": {
            "$ref": "#/components/schemas/PaymentDateRule"
          },
          "paymentDateDayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.HmrcDetailsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "officeNumber": {
            "type": "string",
            "nullable": true
          },
          "payeReference": {
            "type": "string",
            "nullable": true
          },
          "accountsOfficeReference": {
            "type": "string",
            "nullable": true
          },
          "econ": {
            "type": "string",
            "nullable": true
          },
          "utr": {
            "type": "string",
            "nullable": true
          },
          "coTax": {
            "type": "string",
            "nullable": true
          },
          "employmentAllowance": {
            "type": "boolean"
          },
          "employmentAllowanceMaxClaim": {
            "type": "number",
            "description": "You might reduce this from the default if you've made/are making a claim in another system",
            "format": "double"
          },
          "smallEmployersRelief": {
            "type": "boolean"
          },
          "apprenticeshipLevy": {
            "type": "boolean"
          },
          "apprenticeshipLevyAllowance": {
            "type": "number",
            "format": "double"
          },
          "quarterlyPaymentSchedule": {
            "type": "boolean",
            "description": "Set to true if the employer pays HMRC on a quarterly schedule.\r\nA value of false implies a monthly schedule.\r\n<b>Warning:</b> Changing this value after starting PayRuns will\r\ndelete any existing payments or adjustments you may have entered."
          },
          "includeEmploymentAllowanceOnMonthlyJournal": {
            "type": "boolean",
            "description": "If the employer is not on a QuarterlyPaymentSchedule\r\nand is claiming EmploymentAllowance, then set this to true to include a line for\r\nEmployment Allowance on the journal for the monthly schedule."
          },
          "carryForwardUnpaidLiabilities": {
            "type": "boolean",
            "description": "If set to true then any unpaid amounts from previous periods will be brought forward\r\nto work out the liability for the current period.\r\nYou'd set this to false if you don't want to track payments."
          },
          "paymentDateRule": {
            "$ref": "#/components/schemas/PaymentDateRule"
          },
          "paymentDateDayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.HolidayEntitlementRequest": {
        "required": [
          "baseHolidayEntitlement",
          "effectiveDate"
        ],
        "type": "object",
        "properties": {
          "effectiveDate": {
            "type": "string",
            "description": "PaySpine Holiday Entitlement Effective Date",
            "format": "date"
          },
          "baseHolidayEntitlement": {
            "type": "number",
            "description": "PaySpine Base Holiday Entitlement",
            "format": "double"
          },
          "yearsServiceEntitlementBasis": {
            "$ref": "#/components/schemas/PaySpineYearsServiceEntitlementBasis"
          },
          "yearsServiceEntitlements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.YearsServiceEntitlementRequest"
            },
            "description": "Holiday Entitlement Years Service Entitlements",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.HolidayEntitlementResponse": {
        "required": [
          "baseHolidayEntitlement",
          "effectiveDate"
        ],
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Unique identifier for the Holiday Entitlement",
            "format": "uuid"
          },
          "effectiveDate": {
            "type": "string",
            "description": "PaySpine Holiday Entitlement Effective Date",
            "format": "date"
          },
          "baseHolidayEntitlement": {
            "type": "number",
            "description": "PaySpine Base Holiday Entitlement",
            "format": "double"
          },
          "yearsServiceEntitlementBasis": {
            "$ref": "#/components/schemas/PaySpineYearsServiceEntitlementBasis"
          },
          "yearsServiceEntitlements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.YearsServiceEntitlementResponse"
            },
            "description": "Holiday Entitlement Years Service Entitlements",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.HolidayEntitlementUpdateRequest": {
        "required": [
          "baseHolidayEntitlement",
          "effectiveDate"
        ],
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Unique identifier for the PaySpine Holiday Entitlement.",
            "format": "uuid"
          },
          "effectiveDate": {
            "type": "string",
            "description": "PaySpine Holiday Entitlement Effective Date",
            "format": "date"
          },
          "baseHolidayEntitlement": {
            "type": "number",
            "description": "PaySpine Base Holiday Entitlement",
            "format": "double"
          },
          "yearsServiceEntitlementBasis": {
            "$ref": "#/components/schemas/PaySpineYearsServiceEntitlementBasis"
          },
          "yearsServiceEntitlements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.YearsServiceEntitlementUpdateRequest"
            },
            "description": "Holiday Entitlement Years Service Entitlements",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.HolidaySchemeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Holiday scheme name"
          },
          "averageCalculationWeeks": {
            "type": "integer",
            "description": "The number of weeks that the average holiday pay calculation is to be calculated over (Default 52)",
            "format": "int32"
          },
          "useOnlyPaidWeeks": {
            "type": "boolean",
            "description": "If to go back further than the stated no of weeks for calculation if there are weeks where the employee has not been paid. (Default- True)"
          },
          "ignoreSxp": {
            "type": "boolean",
            "description": "Option to ignore weeks where SXP payments have been paid. The calculation will then go back like above until the stated number of weeks are included in the calculation. (Default -True)."
          },
          "calculationDurationUnit": {
            "$ref": "#/components/schemas/HolidaySchemeDurationType"
          },
          "useNiPay": {
            "type": "boolean",
            "description": "If use National insurance gross taxable pay. (Default - True)."
          },
          "useWorkingPattern": {
            "type": "boolean",
            "description": "If use the weekly hours or days as per their working pattern as the divisor for the average holiday rate."
          },
          "payCodeSetForPayId": {
            "type": "string",
            "description": "the Paycode set that they want to use for the Values to enable the calculation.",
            "format": "uuid",
            "nullable": true
          },
          "payCodeSetForHoursId": {
            "type": "string",
            "description": "the Paycode set that they want to use for the Hours to enable the calculation.",
            "format": "uuid",
            "nullable": true
          },
          "payCodeSetForDaysId": {
            "type": "string",
            "description": "the Paycode set that they want to use for the Days to enable the calculation.",
            "format": "uuid",
            "nullable": true
          },
          "useFallbackRate": {
            "type": "boolean",
            "description": "Indicates to use employee base hourly rate where the calculated average hourly rate is less"
          }
        },
        "additionalProperties": false
      },
      "Contract.HolidaySchemeResponse": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Holiday scheme identifier",
            "format": "uuid"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Holiday scheme name"
          },
          "averageCalculationWeeks": {
            "type": "integer",
            "description": "The number of weeks that the average holiday pay calculation is to be calculated over (Default 52)",
            "format": "int32"
          },
          "useOnlyPaidWeeks": {
            "type": "boolean",
            "description": "If to go back further than the stated no of weeks for calculation if there are weeks where the employee has not been paid. (Default- True)"
          },
          "ignoreSxp": {
            "type": "boolean",
            "description": "Option to ignore weeks where SXP payments have been paid. The calculation will then go back like above until the stated number of weeks are included in the calculation. (Default -True)."
          },
          "calculationDurationUnit": {
            "$ref": "#/components/schemas/HolidaySchemeDurationType"
          },
          "useNiPay": {
            "type": "boolean",
            "description": "If use National insurance gross taxable pay. (Default - True)."
          },
          "useWorkingPattern": {
            "type": "boolean",
            "description": "If use the weekly hours or days as per their working pattern as the divisor for the average holiday rate."
          },
          "payCodeSetForPayId": {
            "type": "string",
            "description": "the Paycode set that they want to use for the Values to enable the calculation.",
            "format": "uuid",
            "nullable": true
          },
          "payCodeSetForHoursId": {
            "type": "string",
            "description": "the Paycode set that they want to use for the Hours to enable the calculation.",
            "format": "uuid",
            "nullable": true
          },
          "payCodeSetForDaysId": {
            "type": "string",
            "description": "the Paycode set that they want to use for the Days to enable the calculation.",
            "format": "uuid",
            "nullable": true
          },
          "useFallbackRate": {
            "type": "boolean",
            "description": "Indicates to use employee base hourly rate where the calculated average hourly rate is less"
          }
        },
        "additionalProperties": false
      },
      "Contract.JobErrorResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the job error.",
            "format": "uuid"
          },
          "jobId": {
            "type": "string",
            "description": "Job public Id",
            "format": "uuid"
          },
          "errorMessage": {
            "type": "string",
            "description": "Error Message",
            "nullable": true
          },
          "errorType": {
            "type": "string",
            "description": "Type of job error",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "description": "Date the job error was created",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.JobResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Job public Id.",
            "format": "uuid"
          },
          "employerId": {
            "type": "string",
            "description": "Employer public Id.",
            "format": "uuid"
          },
          "employerName": {
            "type": "string",
            "description": "Employer name.",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/JobType"
          },
          "name": {
            "type": "string",
            "description": "The Job name, e.g. uploaded file for Import, or report display name for Report",
            "nullable": true
          },
          "outputFormat": {
            "type": "string",
            "description": "The Job output format, e.g. json/csv/pdf for Report, or something else for other Job types.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "executionStartTime": {
            "type": "string",
            "description": "The Job excution start time.",
            "format": "date",
            "nullable": true
          },
          "timeInQueue": {
            "type": "integer",
            "description": "The time the Job spent in the queue before execution in seconds.",
            "format": "int32",
            "nullable": true
          },
          "executionTime": {
            "type": "integer",
            "description": "The time it took the Job to execute in seconds.",
            "format": "int32",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Contract.JobResultResponse"
          },
          "createdDate": {
            "type": "string",
            "description": "Job Created date.",
            "format": "date"
          },
          "updatedDate": {
            "type": "string",
            "description": "Job Updated date where applicable.",
            "format": "date",
            "nullable": true
          },
          "requestedByName": {
            "type": "string",
            "description": "The name of the user that requested this job",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.JobResultFileResponse": {
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string",
            "description": "Result File name",
            "nullable": true
          },
          "uri": {
            "type": "string",
            "description": "Api method URI that can be used to download the result file",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.JobResultResponse": {
        "type": "object",
        "properties": {
          "file": {
            "$ref": "#/components/schemas/Contract.JobResultFileResponse"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "description": "Job result metadata, e.g. Employee Import stats",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Job execution's errors.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.JournalTemplateRequest": {
        "type": "object",
        "properties": {
          "header": {
            "type": "string",
            "description": "Header of Journal Template",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "Content of Journal Template",
            "nullable": true
          },
          "useColumnHeaders": {
            "type": "boolean",
            "description": "Indicates whether content is empty or not"
          }
        },
        "additionalProperties": false
      },
      "Contract.JournalTemplateResponse": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Journal Template identifier",
            "format": "uuid"
          },
          "header": {
            "type": "string",
            "description": "Header of Journal Template",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "Content of Journal Template",
            "nullable": true
          },
          "useColumnHeaders": {
            "type": "boolean",
            "description": "Indicates whether content is empty or not"
          }
        },
        "additionalProperties": false
      },
      "Contract.JournalTokenRequest": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/JournalTokenType"
          },
          "name": {
            "type": "string",
            "description": "Name of Journal Tokens",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description of Journal Tokens",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.JournalTokenResponse": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Journal Token identifier",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/JournalTokenType"
          },
          "name": {
            "type": "string",
            "description": "Name of Journal Tokens",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description of Journal Tokens",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.JournalTokenResponseItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.LeaveImportRequest": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "description": "Payroll Code",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/LeaveType"
          },
          "pay": {
            "$ref": "#/components/schemas/LeavePayType"
          },
          "openEndedAbsence": {
            "type": "boolean",
            "description": "Open Ended Absence"
          },
          "from": {
            "type": "string",
            "description": "The first day of Leave.",
            "format": "date",
            "nullable": true
          },
          "to": {
            "type": "string",
            "description": "The last day of Leave.",
            "format": "date",
            "nullable": true
          },
          "historicLeaveRequiresProcessing": {
            "type": "boolean",
            "description": "Only used during the creation of historical SSP.\r\nWhen creating historical SSP, this will determine whether to pay that leave in the next PayRun."
          },
          "averageWeeklyEarnings": {
            "type": "number",
            "description": "The employees average weekly earnings.",
            "format": "double",
            "nullable": true
          },
          "automaticAWECalculation": {
            "type": "boolean",
            "description": "Automatic Average Weekly Earnings."
          },
          "offsetPay": {
            "type": "boolean",
            "description": "Top-up pay to usual amongst (offsetting)"
          },
          "calculationType": {
            "$ref": "#/components/schemas/LeaveCalculationType"
          },
          "percentOfPay": {
            "type": "number",
            "description": "Only provided when the leave type is 'Sick' and the payment type is 'Custom'.",
            "format": "double",
            "nullable": true
          },
          "strikeHoursToDeduct": {
            "type": "number",
            "description": "Only provided when the leave type is 'StrikeAction' and the calculation type is 'SpecifyHours'.",
            "format": "double",
            "nullable": true
          },
          "paySSPInAddition": {
            "type": "boolean",
            "description": "Only provided when the leave type is 'Sick' and the payment type is 'Custom'."
          },
          "useAssumedPensionablePay": {
            "type": "boolean",
            "description": "Only provided when the leave type is 'Sick' and the payment type is 'Custom', 'Occupational Policy' or 'Statutory Pay'."
          },
          "assumedPensionablePay": {
            "type": "number",
            "description": "Assumed Pensionable Pay (APP) is an average figure, calculated as the average pay in the 3 months\r\n(or 12 weeks if weekly/fortnightly/fourweekly paid) before the absence",
            "format": "double",
            "nullable": true
          },
          "automaticAPPCalculation": {
            "type": "boolean",
            "description": "If set to True then we'll automatically calculate the AssumedPensionablePay. \r\nSet it to false if you want to manually provide a figure that overrides our calculations"
          }
        },
        "additionalProperties": false
      },
      "Contract.LeaverDetails": {
        "type": "object",
        "properties": {
          "hasLeft": {
            "type": "boolean"
          },
          "leaveDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "isDeceased": {
            "type": "boolean"
          },
          "paymentAfterLeaving": {
            "type": "boolean"
          },
          "p45Sent": {
            "type": "boolean"
          },
          "payAccruedBalance": {
            "type": "boolean",
            "description": "If set to true then new PayLine will be added into the PayRunEntry to pay the accrued balance"
          },
          "paymentMethodAfterLeaving": {
            "$ref": "#/components/schemas/PaymentMethodAfterLeaving"
          }
        },
        "additionalProperties": false
      },
      "Contract.LondonAllowanceRequest": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/LondonAllowanceType"
          },
          "valueType": {
            "$ref": "#/components/schemas/LondonAllowanceValueType"
          },
          "value": {
            "type": "number",
            "description": "Value of London Allowance",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.LondonAllowanceResponse": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/LondonAllowanceType"
          },
          "valueType": {
            "$ref": "#/components/schemas/LondonAllowanceValueType"
          },
          "value": {
            "type": "number",
            "description": "Value of London Allowance",
            "format": "double"
          },
          "uniqueId": {
            "type": "string",
            "description": "London Allowance identifier",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.NetOfOnCostsResponse": {
        "type": "object",
        "properties": {
          "salary": {
            "type": "number",
            "format": "double"
          },
          "holidayPay": {
            "type": "number",
            "format": "double"
          },
          "employersPensionContribution": {
            "type": "number",
            "format": "double"
          },
          "employeesPensionContribution": {
            "type": "number",
            "format": "double"
          },
          "employersNi": {
            "type": "number",
            "format": "double"
          },
          "apprenticeshipLevy": {
            "type": "number",
            "format": "double"
          },
          "grossDailyRate": {
            "type": "number",
            "format": "double"
          },
          "totalFees": {
            "type": "number",
            "format": "double"
          },
          "numberOfDays": {
            "type": "number",
            "format": "double"
          },
          "simulation": {
            "$ref": "#/components/schemas/Contract.NetOfOnCostsSimulationResponse"
          },
          "holInclusiveSimulation": {
            "$ref": "#/components/schemas/Contract.NetOfOnCostsSimulationResponse"
          }
        },
        "additionalProperties": false
      },
      "Contract.NetOfOnCostsSimulationResponse": {
        "type": "object",
        "properties": {
          "grossPay": {
            "type": "number",
            "format": "double"
          },
          "employeePension": {
            "type": "number",
            "format": "double"
          },
          "taxDue": {
            "type": "number",
            "format": "double"
          },
          "niDue": {
            "type": "number",
            "format": "double"
          },
          "netPay": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Contract.OverseasEmployerDetails": {
        "type": "object",
        "properties": {
          "overseasEmployer": {
            "type": "boolean"
          },
          "overseasSecondmentStatus": {
            "$ref": "#/components/schemas/OverseasSecondmentStatus"
          },
          "eeaCitizen": {
            "type": "boolean"
          },
          "epm6Scheme": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.P11HistoryRequest": {
        "type": "object",
        "properties": {
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32"
          },
          "niablePay": {
            "type": "number",
            "format": "double"
          },
          "payDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.P11HistoryResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32"
          },
          "niablePay": {
            "type": "number",
            "format": "double"
          },
          "payDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.P45AvailabilityResponse": {
        "type": "object",
        "properties": {
          "period": {
            "type": "integer",
            "description": "The Period (i.e, Tax Week or Tax Month) of the PayRun",
            "format": "int32"
          },
          "ordinal": {
            "type": "integer",
            "description": "The Ordinal of the PayRun",
            "format": "int32"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "isLeaverPresent": {
            "type": "boolean",
            "description": "Indicates if a leaver is present in the pay run"
          }
        },
        "additionalProperties": false
      },
      "Contract.PartnerDetails": {
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "initials": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "niNumber": {
            "maxLength": 15,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PayHistoryRequest": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "string",
            "description": "Employee unique Id",
            "format": "uuid"
          },
          "employeeRoleId": {
            "type": "string",
            "description": "Employee role unique Id",
            "format": "uuid"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYearTypes"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriodTypes"
          },
          "periodNumber": {
            "type": "integer",
            "description": "Tax Week or Tax Month number this PayRunEntry relates to",
            "format": "int32"
          },
          "payAmount": {
            "type": "number",
            "description": "monetary amount for given period, if not provided then 0",
            "format": "double"
          },
          "hours": {
            "type": "number",
            "description": "decimal amount of hours worked, if not provided then 0",
            "format": "double"
          },
          "days": {
            "type": "number",
            "description": "decimal amount of days worked, if not provided then 0",
            "format": "double"
          },
          "isStatutoryPayOnly": {
            "type": "boolean",
            "description": "optional boolean flag, if the period only had SXP present"
          },
          "paymentDate": {
            "type": "string",
            "description": "The date payment was made for respective period",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayHistoryResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Average Holiday Pay History identifier",
            "format": "uuid"
          },
          "employeeId": {
            "type": "string",
            "description": "Employee unique Id",
            "format": "uuid"
          },
          "employeeRoleId": {
            "type": "string",
            "description": "Employee role unique Id",
            "format": "uuid"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYearTypes"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriodTypes"
          },
          "periodNumber": {
            "type": "integer",
            "description": "Tax Week or Tax Month number this PayRunEntry relates to",
            "format": "int32"
          },
          "payAmount": {
            "type": "number",
            "description": "monetary amount for given period, if not provided then 0",
            "format": "double"
          },
          "hours": {
            "type": "number",
            "description": "decimal amount of hours worked, if not provided then 0",
            "format": "double"
          },
          "days": {
            "type": "number",
            "description": "decimal amount of days worked, if not provided then 0",
            "format": "double"
          },
          "isStatutoryPayOnly": {
            "type": "boolean",
            "description": "optional boolean flag, if the period only had SXP present"
          },
          "paymentDate": {
            "type": "string",
            "description": "The date payment was made for respective period",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayHistoryUpdateRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Average Holiday Pay History identifier",
            "format": "uuid"
          },
          "employeeId": {
            "type": "string",
            "description": "Employee unique Id",
            "format": "uuid"
          },
          "employeeRoleId": {
            "type": "string",
            "description": "Employee role unique Id",
            "format": "uuid"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYearTypes"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriodTypes"
          },
          "periodNumber": {
            "type": "integer",
            "description": "Tax Week or Tax Month number this PayRunEntry relates to",
            "format": "int32"
          },
          "payAmount": {
            "type": "number",
            "description": "monetary amount for given period, if not provided then 0",
            "format": "double"
          },
          "hours": {
            "type": "number",
            "description": "decimal amount of hours worked, if not provided then 0",
            "format": "double"
          },
          "days": {
            "type": "number",
            "description": "decimal amount of days worked, if not provided then 0",
            "format": "double"
          },
          "isStatutoryPayOnly": {
            "type": "boolean",
            "description": "optional boolean flag, if the period only had SXP present"
          },
          "paymentDate": {
            "type": "string",
            "description": "The date payment was made for respective period",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayLineRequest": {
        "type": "object",
        "properties": {
          "analysisCategoryCodesJson": {
            "type": "string",
            "description": "Analysis category id and analysiscategoryCode json",
            "nullable": true
          },
          "value": {
            "type": "number",
            "description": "The amount to add or deduct (whether it is a deduction or addition depends on the PayCode used).\r\nIf the PayCode has a CalculationType other than FixedAmount then this field will be a percentage.\r\nIf the PayCode has a MultiplierType other than None then this field will be readonly and automatically calculated.",
            "format": "double"
          },
          "rate": {
            "type": "number",
            "description": "If the related  PayCode has a MultiplierType other than None then this field will be used as the rate per day or hour. Otherwise it isn't used",
            "format": "double",
            "nullable": true
          },
          "multiplier": {
            "type": "number",
            "description": "If the related PayCode has a MultiplierType other than None then this field will be used as number of days or hours",
            "format": "double",
            "nullable": true
          },
          "description": {
            "maxLength": 100,
            "type": "string",
            "description": "A freeform description to accompany this line. It will be displayed on the payslip.",
            "nullable": true
          },
          "code": {
            "type": "string",
            "description": "The Code of the PayCode this line is assigned to. The PayCode determines the treatment of this line when it comes to NI, Tax and Pensions as well as whether it's a deduction or addition.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "childId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "isNetToGross": {
            "type": "boolean",
            "description": "If the PayLine is a fixed ammount addition without multiplier then this property may be set to true so that the amount of the addition to be considered a take home pay target."
          },
          "targetNetToGrossValue": {
            "type": "number",
            "description": "The orginal net fixed addition amount that is considered to be a take home pay target.",
            "format": "double",
            "nullable": true
          },
          "netToGrossDiscrepancy": {
            "type": "number",
            "description": "The discrepancy between the targeted and the calculated grossed up value durig a net to gross calculation.",
            "format": "double",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date the payline starts being calculated in payrun",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "description": "The date the payline stops being calculated in payrun",
            "format": "date",
            "nullable": true
          },
          "isAutoGeneratedBasicPayLine": {
            "type": "boolean"
          },
          "percentageOfEffectiveDays": {
            "type": "number",
            "description": "The percentage of working days the effective dates span for pro-rata'ing values, calculated/set during each payrun",
            "format": "double",
            "nullable": true
          },
          "totalWorkingDays": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "isAutomaticBackPay": {
            "type": "boolean",
            "description": "Automatically calculate backpay and add or modify the necessary pay lines for this addition/deduction when a pay run is created.\r\nApplicable only to employee level addition/deduction pay lines.\r\nIf set to false then you must manually handle the calculation and adding of backpay lines."
          },
          "ignoreInitialBackPay": {
            "type": "boolean",
            "description": "Skip the automatic backpay calculation on the first pay run, if the addition/deduction had been paid outside or Staffology.\r\nIf set to false, the automatic backpay calculation will be performed on the first pay run."
          },
          "contributesToBasicPay": {
            "type": "boolean",
            "description": "Indicates whether this PayLine contributes to the basic pay of the Employee."
          },
          "calculateAsWhenPaid": {
            "type": "boolean",
            "description": "Indicates whether this pay line should be treated as When Paid rather than When Earned"
          },
          "totalPaidDays": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "roleId": {
            "type": "string",
            "description": "The employee role which is associated with this pay line.\r\nIf set to null, the pay line is not related with a role.",
            "format": "uuid",
            "nullable": true
          },
          "earnedFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "earnedTo": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "annualValue": {
            "type": "number",
            "description": "The original value from the PayLine before we modify it\r\nCurrently only used when CalculationType is set to FixedAnnualAmount\r\nso we can determine whether the payline value needs calculating or not\r\nTo recalculate set to null with annual amount recorded in Value",
            "format": "double",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Department code which we want to override in payline",
            "nullable": true
          },
          "costCentre": {
            "type": "string",
            "description": "CostCentre code which we want to override in payline",
            "nullable": true
          },
          "departmentId": {
            "type": "string",
            "description": "Department uniqueId which we want to override in payline",
            "format": "uuid",
            "nullable": true
          },
          "costCentreId": {
            "type": "string",
            "description": "CostCentre uniqueId which we want to override in payline",
            "format": "uuid",
            "nullable": true
          },
          "analysisCategoriesCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PaylineAnalysisCategoriesCodes"
            },
            "description": "List of analysiscategory id and analysiscategoryCode id",
            "nullable": true
          },
          "analysisCategoryCodeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Array of analysiscategoryCode uniqueId",
            "nullable": true
          },
          "paySpineId": {
            "type": "string",
            "description": "[readonly] The Id of the associated pay spine.",
            "format": "uuid",
            "nullable": true
          },
          "paySpineGradeId": {
            "type": "string",
            "description": "[readonly] The Id of the associated pay spine grade.",
            "format": "uuid",
            "nullable": true
          },
          "spinalPointId": {
            "type": "string",
            "description": "[readonly] The Id of the associated spinal point.",
            "format": "uuid",
            "nullable": true
          },
          "londonAllowanceId": {
            "type": "integer",
            "description": "Used to set London allowance id for payline",
            "format": "int32",
            "nullable": true
          },
          "fullTimeAnnualValue": {
            "type": "number",
            "description": "Used to set Full Time Annual Value for payline",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayLineResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "attachmentOrderId": {
            "type": "string",
            "description": "[readonly] The Id of the associated AttachmentOrder. Only included if the Code is AEO",
            "format": "uuid",
            "nullable": true
          },
          "pensionId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Pension. Only included if the Code is PENSION, PENSIONSS or PENSIONRAS",
            "format": "uuid",
            "nullable": true
          },
          "leaveId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Leave. Only included if the PayLine is a result of a Leave with Statutory pay",
            "format": "uuid",
            "nullable": true
          },
          "loanId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Loan, if any.",
            "format": "uuid",
            "nullable": true
          },
          "leaveStatutoryDaysPaid": {
            "type": "number",
            "description": "[readonly] If the PayLine is a result of a Leave with Statutory Pay then this property tells you how many days they've been paid for (based on their Working Pattern).",
            "format": "double",
            "nullable": true
          },
          "leaveStatutoryWeeksPaid": {
            "type": "number",
            "description": "[readonly] If the PayLine is a result of a Leave with Statutory Pay then this property tells you how many weeks they've been paid for (based on their Working Pattern).",
            "format": "double",
            "nullable": true
          },
          "initialBackPayPublicPayRunId": {
            "type": "string",
            "description": "[readonly] Used to mark the first payrun where this payline has been payrolled for backpay",
            "format": "uuid",
            "nullable": true
          },
          "value": {
            "type": "number",
            "description": "The amount to add or deduct (whether it is a deduction or addition depends on the PayCode used).\r\nIf the PayCode has a CalculationType other than FixedAmount then this field will be a percentage.\r\nIf the PayCode has a MultiplierType other than None then this field will be readonly and automatically calculated.",
            "format": "double"
          },
          "rate": {
            "type": "number",
            "description": "If the related  PayCode has a MultiplierType other than None then this field will be used as the rate per day or hour. Otherwise it isn't used",
            "format": "double",
            "nullable": true
          },
          "multiplier": {
            "type": "number",
            "description": "If the related PayCode has a MultiplierType other than None then this field will be used as number of days or hours",
            "format": "double",
            "nullable": true
          },
          "description": {
            "maxLength": 100,
            "type": "string",
            "description": "A freeform description to accompany this line. It will be displayed on the payslip.",
            "nullable": true
          },
          "code": {
            "type": "string",
            "description": "The Code of the PayCode this line is assigned to. The PayCode determines the treatment of this line when it comes to NI, Tax and Pensions as well as whether it's a deduction or addition.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "childId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "isNetToGross": {
            "type": "boolean",
            "description": "If the PayLine is a fixed ammount addition without multiplier then this property may be set to true so that the amount of the addition to be considered a take home pay target."
          },
          "targetNetToGrossValue": {
            "type": "number",
            "description": "The orginal net fixed addition amount that is considered to be a take home pay target.",
            "format": "double",
            "nullable": true
          },
          "netToGrossDiscrepancy": {
            "type": "number",
            "description": "The discrepancy between the targeted and the calculated grossed up value durig a net to gross calculation.",
            "format": "double",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date the payline starts being calculated in payrun",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "description": "The date the payline stops being calculated in payrun",
            "format": "date",
            "nullable": true
          },
          "isAutoGeneratedBasicPayLine": {
            "type": "boolean"
          },
          "percentageOfEffectiveDays": {
            "type": "number",
            "description": "The percentage of working days the effective dates span for pro-rata'ing values, calculated/set during each payrun",
            "format": "double",
            "nullable": true
          },
          "totalWorkingDays": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "isAutomaticBackPay": {
            "type": "boolean",
            "description": "Automatically calculate backpay and add or modify the necessary pay lines for this addition/deduction when a pay run is created.\r\nApplicable only to employee level addition/deduction pay lines.\r\nIf set to false then you must manually handle the calculation and adding of backpay lines."
          },
          "ignoreInitialBackPay": {
            "type": "boolean",
            "description": "Skip the automatic backpay calculation on the first pay run, if the addition/deduction had been paid outside or Staffology.\r\nIf set to false, the automatic backpay calculation will be performed on the first pay run."
          },
          "contributesToBasicPay": {
            "type": "boolean",
            "description": "Indicates whether this PayLine contributes to the basic pay of the Employee."
          },
          "calculateAsWhenPaid": {
            "type": "boolean",
            "description": "Indicates whether this pay line should be treated as When Paid rather than When Earned"
          },
          "totalPaidDays": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "roleId": {
            "type": "string",
            "description": "The employee role which is associated with this pay line.\r\nIf set to null, the pay line is not related with a role.",
            "format": "uuid",
            "nullable": true
          },
          "earnedFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "earnedTo": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "annualValue": {
            "type": "number",
            "description": "The original value from the PayLine before we modify it\r\nCurrently only used when CalculationType is set to FixedAnnualAmount\r\nso we can determine whether the payline value needs calculating or not\r\nTo recalculate set to null with annual amount recorded in Value",
            "format": "double",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Department code which we want to override in payline",
            "nullable": true
          },
          "costCentre": {
            "type": "string",
            "description": "CostCentre code which we want to override in payline",
            "nullable": true
          },
          "departmentId": {
            "type": "string",
            "description": "Department uniqueId which we want to override in payline",
            "format": "uuid",
            "nullable": true
          },
          "costCentreId": {
            "type": "string",
            "description": "CostCentre uniqueId which we want to override in payline",
            "format": "uuid",
            "nullable": true
          },
          "analysisCategoriesCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PaylineAnalysisCategoriesCodes"
            },
            "description": "List of analysiscategory id and analysiscategoryCode id",
            "nullable": true
          },
          "analysisCategoryCodeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Array of analysiscategoryCode uniqueId",
            "nullable": true
          },
          "paySpineId": {
            "type": "string",
            "description": "[readonly] The Id of the associated pay spine.",
            "format": "uuid",
            "nullable": true
          },
          "paySpineGradeId": {
            "type": "string",
            "description": "[readonly] The Id of the associated pay spine grade.",
            "format": "uuid",
            "nullable": true
          },
          "spinalPointId": {
            "type": "string",
            "description": "[readonly] The Id of the associated spinal point.",
            "format": "uuid",
            "nullable": true
          },
          "londonAllowanceId": {
            "type": "integer",
            "description": "Used to set London allowance id for payline",
            "format": "int32",
            "nullable": true
          },
          "fullTimeAnnualValue": {
            "type": "number",
            "description": "Used to set Full Time Annual Value for payline",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayOptionsBaseResponse": {
        "type": "object",
        "properties": {
          "regularPayLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PayLineResponse"
            },
            "description": "These are used to make additions/deductions to the pay for this Employee.\r\nYou do not need to include Pension, Tax, NI,  Loan Repayments, etc as these will all be automatically created.",
            "nullable": true
          },
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "nationalMinimumWage": {
            "type": "boolean"
          },
          "payCode": {
            "type": "string",
            "description": "If you want the Employees pay to be allocated to a code other than BASIC, specify it here",
            "nullable": true
          },
          "mileageVehicleType": {
            "$ref": "#/components/schemas/MileageVehicleType"
          },
          "mapsMiles": {
            "type": "integer",
            "description": "The number of miles to pay for as Mileage Allowance Payments",
            "format": "int32",
            "nullable": true
          },
          "payAmount": {
            "type": "number",
            "description": "The amount the Employee is regularly paid each period",
            "format": "double"
          },
          "payAmountMultiplier": {
            "type": "number",
            "description": "This property is irrelevant if the basis is Monthly.\r\nBut if the basis is Daily or Hourly then this property sets how many days/hours the employee should be paid for in the period.",
            "format": "double"
          },
          "baseHourlyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of\r\nthe employees base hourly rate. Eg Overtime.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "baseDailyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of\r\nthe employees base daily rate. Eg sick.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "niTable": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayOptionsImportRequest": {
        "type": "object",
        "properties": {
          "analysisCategoriesCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PaylineAnalysisCategoriesCodes"
            },
            "nullable": true
          },
          "autoAdjustForLeave": {
            "type": "boolean"
          },
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "contributesToBasicPay": {
            "type": "boolean"
          },
          "costCentre": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "employerIdentifier": {
            "type": "string",
            "nullable": true
          },
          "ignoreInitialBackPay": {
            "type": "boolean"
          },
          "isAutomaticBackPay": {
            "type": "boolean"
          },
          "isNetToGross": {
            "type": "boolean"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PaylineRequest"
            },
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "payAmount": {
            "type": "number",
            "format": "double"
          },
          "payAmountMultiplier": {
            "type": "number",
            "format": "double"
          },
          "payCode": {
            "type": "string",
            "nullable": true
          },
          "payGrade": {
            "type": "string",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "paySpine": {
            "type": "string",
            "nullable": true
          },
          "roleReference": {
            "type": "string",
            "nullable": true
          },
          "spinePoint": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PayOptionsRequest": {
        "type": "object",
        "properties": {
          "regularPayLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PayLineRequest"
            },
            "description": "These are used to make additions/deductions to the pay for this Employee.\r\nYou do not need to include Pension, Tax, NI,  Loan Repayments, etc as these will all be automatically created.",
            "nullable": true
          },
          "period": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "Indicates whether to use first, second, third (etc) PaySchedule for this PayPeriod.",
            "format": "int32"
          },
          "method": {
            "$ref": "#/components/schemas/PayMethod"
          },
          "withholdTaxRefundIfPayIsZero": {
            "type": "boolean",
            "description": "If you don't want negative PAYE values when the Gross pay is zero, set this to true"
          },
          "taxAndNi": {
            "$ref": "#/components/schemas/Contract.TaxAndNi"
          },
          "fpsFields": {
            "$ref": "#/components/schemas/Contract.FpsFields"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "nationalMinimumWage": {
            "type": "boolean"
          },
          "payCode": {
            "type": "string",
            "description": "If you want the Employees pay to be allocated to a code other than BASIC, specify it here",
            "nullable": true
          },
          "mileageVehicleType": {
            "$ref": "#/components/schemas/MileageVehicleType"
          },
          "mapsMiles": {
            "type": "integer",
            "description": "The number of miles to pay for as Mileage Allowance Payments",
            "format": "int32",
            "nullable": true
          },
          "payAmount": {
            "type": "number",
            "description": "The amount the Employee is regularly paid each period",
            "format": "double"
          },
          "payAmountMultiplier": {
            "type": "number",
            "description": "This property is irrelevant if the basis is Monthly.\r\nBut if the basis is Daily or Hourly then this property sets how many days/hours the employee should be paid for in the period.",
            "format": "double"
          },
          "baseHourlyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of\r\nthe employees base hourly rate. Eg Overtime.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "baseDailyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of\r\nthe employees base daily rate. Eg sick.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "niTable": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayOptionsResponse": {
        "type": "object",
        "properties": {
          "regularPayLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PayLineResponse"
            },
            "description": "These are used to make additions/deductions to the pay for this Employee.\r\nYou do not need to include Pension, Tax, NI,  Loan Repayments, etc as these will all be automatically created.",
            "nullable": true
          },
          "basicPay": {
            "type": "number",
            "description": "The amount of basic pay the Employee is regularly paid each period\r\nThis amount is the combined total of all pay elements that contribute to basic pay",
            "format": "double"
          },
          "period": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "Indicates whether to use first, second, third (etc) PaySchedule for this PayPeriod.",
            "format": "int32"
          },
          "method": {
            "$ref": "#/components/schemas/PayMethod"
          },
          "withholdTaxRefundIfPayIsZero": {
            "type": "boolean",
            "description": "If you don't want negative PAYE values when the Gross pay is zero, set this to true"
          },
          "taxAndNi": {
            "$ref": "#/components/schemas/Contract.TaxAndNi"
          },
          "fpsFields": {
            "$ref": "#/components/schemas/Contract.FpsFields"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "nationalMinimumWage": {
            "type": "boolean"
          },
          "payCode": {
            "type": "string",
            "description": "If you want the Employees pay to be allocated to a code other than BASIC, specify it here",
            "nullable": true
          },
          "mileageVehicleType": {
            "$ref": "#/components/schemas/MileageVehicleType"
          },
          "mapsMiles": {
            "type": "integer",
            "description": "The number of miles to pay for as Mileage Allowance Payments",
            "format": "int32",
            "nullable": true
          },
          "payAmount": {
            "type": "number",
            "description": "The amount the Employee is regularly paid each period",
            "format": "double"
          },
          "payAmountMultiplier": {
            "type": "number",
            "description": "This property is irrelevant if the basis is Monthly.\r\nBut if the basis is Daily or Hourly then this property sets how many days/hours the employee should be paid for in the period.",
            "format": "double"
          },
          "baseHourlyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of\r\nthe employees base hourly rate. Eg Overtime.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "baseDailyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of\r\nthe employees base daily rate. Eg sick.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "niTable": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayPeriodOrdinalSelection": {
        "type": "object",
        "properties": {
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayRunOverridesImportRequest": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "description": "The payroll code of the employee",
            "nullable": true
          },
          "paye": {
            "type": "number",
            "description": "PAYE",
            "format": "double",
            "nullable": true
          },
          "employeeNi": {
            "type": "number",
            "description": "Employee Ni",
            "format": "double",
            "nullable": true
          },
          "employerNi": {
            "type": "number",
            "description": "Employer Ni",
            "format": "double",
            "nullable": true
          },
          "studentLoan": {
            "type": "number",
            "description": "Student Loan",
            "format": "double",
            "nullable": true
          },
          "postGradLoan": {
            "type": "number",
            "description": "Post Graduate Loan",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PayRunResponseItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PayRunStateHistoryResponse": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/PayRunState"
          },
          "createdDate": {
            "type": "string",
            "description": "Date in which the State was changed",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayScheduleByDateRangeRequest": {
        "type": "object",
        "properties": {
          "employerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Employer ids of PaySchedule",
            "nullable": true
          },
          "fromPayDate": {
            "type": "string",
            "description": "From PayDate of PayRun",
            "format": "date"
          },
          "toPayDate": {
            "type": "string",
            "description": "To PayDate of PayRun",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "Represents a request to retrieve pay schedules within a specific date range for a list of employers."
      },
      "Contract.PayScheduleRequest": {
        "type": "object",
        "properties": {
          "employerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Employer ids of PaySchedule",
            "nullable": true
          },
          "taxYears": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxYear"
            },
            "description": "Tax years of PaySchedule",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a request to retrieve pay schedules for a list of employers and tax years."
      },
      "Contract.PayScheduleResponseItem": {
        "type": "object",
        "properties": {
          "payRunList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PayRunResponseItem"
            },
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PaySpineGradeRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Pay spine grade name",
            "nullable": true
          },
          "lowerPointUniqueId": {
            "type": "string",
            "description": "Id of lower spinal point to be used.",
            "format": "uuid"
          },
          "upperPointUniqueId": {
            "type": "string",
            "description": "Id of upper spinal point to be used.",
            "format": "uuid"
          },
          "upperPointUseMax": {
            "type": "boolean",
            "description": "Use the Alt Max Value of the Upper Point. (Default false)"
          },
          "effectiveDate": {
            "type": "string",
            "description": "Date that this configuration is effective from.",
            "format": "date"
          },
          "holidayEntitlement": {
            "type": "number",
            "description": "The number of holidays entitled to this pay spine grade.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.PaySpineGradeResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Pay spine grade name",
            "nullable": true
          },
          "lowerPointUniqueId": {
            "type": "string",
            "description": "Id of lower spinal point used.",
            "format": "uuid"
          },
          "upperPointUniqueId": {
            "type": "string",
            "description": "Id of upper spinal point used.",
            "format": "uuid"
          },
          "upperPointUseMax": {
            "type": "boolean",
            "description": "Use the Alt Max Value of the Upper Point. (Default false)"
          },
          "effectiveDate": {
            "type": "string",
            "description": "Date that this configuration is effective from.",
            "format": "date"
          },
          "uniqueId": {
            "type": "string",
            "description": "Pay spine grade Id",
            "format": "uuid"
          },
          "holidayEntitlement": {
            "type": "number",
            "description": "The number of holiday days entitled for this pay spine grade.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.PaySpineRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the Pay Spine",
            "nullable": true
          },
          "fullTimeHours": {
            "type": "number",
            "description": "Maximum Full Time Hours on this Pay Spine",
            "format": "double"
          },
          "fullTimeWeeks": {
            "type": "number",
            "description": "Maximum Full Time Weeks on this Pay Spine",
            "format": "double"
          },
          "salaryFormula": {
            "type": "string",
            "description": "Formula used to derive annual salary\r\n<remarks>\r\nThe salary formula consists of the following elements and Round functions:\r\n- PointValue (The value of an individual Spinal Point)\r\n- HoursWorked (The hours an employee is contracted to work for in their role)\r\n- FTHours (The full time hours specified for an employee in their role)\r\n- WeeksWorked (The contracted weeks an employee works in their role)\r\n- FTWeeks (The full weeks specified for an employee in their role)\r\nRound functions: \r\n- ROUND(Value,decimal places): Round the value to specific decimal places. The maximum value is between 0 and 15.\r\n- ROUNDUP(Value)\r\n- ROUNDDOWN(Value) \r\n- TRUNCATE(Value)\r\n</remarks><example>\r\nFor example: \"PointValue * ROUND(HoursWorked * WeeksWorked * (7/365),3) / FTHours\" \r\n</example>",
            "nullable": true
          },
          "hourlyDivisor": {
            "type": "number",
            "description": "Hours used to determine Hourly Rate",
            "format": "double"
          },
          "hourlyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Hourly Rates",
            "format": "int32"
          },
          "dailyDivisor": {
            "type": "number",
            "description": "Days used to determine Full time Daily Rate",
            "format": "double"
          },
          "dailyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Daily Rates",
            "format": "int32"
          },
          "annualDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Annual Salaries",
            "format": "int32"
          },
          "annualRoundingRule": {
            "$ref": "#/components/schemas/AnnualRoundingRule"
          },
          "incrementRule": {
            "$ref": "#/components/schemas/IncrementRule"
          },
          "requiresLondonAllowance": {
            "type": "boolean",
            "description": "Requires LA column to be completed on the spine"
          },
          "gradeEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable grades",
            "format": "date"
          },
          "pointEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable spinal points",
            "format": "date"
          },
          "useSpineHolidayRules": {
            "type": "boolean",
            "description": "Flag to include holiday entitlements in Payspine (Default false)"
          },
          "holidayEntitlements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.HolidayEntitlementRequest"
            },
            "description": "PaySpine Holiday Entitlements",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PaySpineResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Pay Spine identifier",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Name of the Pay Spine",
            "nullable": true
          },
          "fullTimeHours": {
            "type": "number",
            "description": "Maximum Full Time Hours on this Pay Spine",
            "format": "double"
          },
          "fullTimeWeeks": {
            "type": "number",
            "description": "Maximum Full Time Weeks on this Pay Spine",
            "format": "double"
          },
          "salaryFormula": {
            "type": "string",
            "description": "Formula used to derive annual salary\r\n<remarks>\r\nThe salary formula consists of the following elements and Round functions:\r\n- PointValue (The value of an individual Spinal Point)\r\n- HoursWorked (The hours an employee is contracted to work for in their role)\r\n- FTHours (The full time hours specified for an employee in their role)\r\n- WeeksWorked (The contracted weeks an employee works in their role)\r\n- FTWeeks (The full weeks specified for an employee in their role)\r\nRound functions: \r\n- ROUND(Value,decimal places): Round the value to specific decimal places. The maximum value is between 0 and 15.\r\n- ROUNDUP(Value)\r\n- ROUNDDOWN(Value) \r\n- TRUNCATE(Value)\r\n</remarks><example>\r\nFor example: \"PointValue * ROUND(HoursWorked * WeeksWorked * (7/365),3) / FTHours\" \r\n</example>",
            "nullable": true
          },
          "hourlyDivisor": {
            "type": "number",
            "description": "Hours used to determine Hourly Rate",
            "format": "double"
          },
          "hourlyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Hourly Rates",
            "format": "int32"
          },
          "dailyDivisor": {
            "type": "number",
            "description": "Days used to determine Full time Daily Rate",
            "format": "double"
          },
          "dailyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Daily Rates",
            "format": "int32"
          },
          "annualDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Annual Salaries",
            "format": "int32"
          },
          "annualRoundingRule": {
            "$ref": "#/components/schemas/AnnualRoundingRule"
          },
          "incrementRule": {
            "$ref": "#/components/schemas/IncrementRule"
          },
          "requiresLondonAllowance": {
            "type": "boolean",
            "description": "Requires LA column to be completed on the spine"
          },
          "gradeEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable grades",
            "format": "date"
          },
          "pointEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable spinal points",
            "format": "date"
          },
          "useSpineHolidayRules": {
            "type": "boolean",
            "description": "Flag to include holiday entitlements in Payspine (Default false)"
          },
          "holidayEntitlements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.HolidayEntitlementResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PaySpineUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the Pay Spine",
            "nullable": true
          },
          "fullTimeHours": {
            "type": "number",
            "description": "Maximum Full Time Hours on this Pay Spine",
            "format": "double"
          },
          "fullTimeWeeks": {
            "type": "number",
            "description": "Maximum Full Time Weeks on this Pay Spine",
            "format": "double"
          },
          "salaryFormula": {
            "type": "string",
            "description": "Formula used to derive annual salary\r\n<remarks>\r\nThe salary formula consists of the following elements and Round functions:\r\n- PointValue (The value of an individual Spinal Point)\r\n- HoursWorked (The hours an employee is contracted to work for in their role)\r\n- FTHours (The full time hours specified for an employee in their role)\r\n- WeeksWorked (The contracted weeks an employee works in their role)\r\n- FTWeeks (The full weeks specified for an employee in their role)\r\nRound functions: \r\n- ROUND(Value,decimal places): Round the value to specific decimal places. The maximum value is between 0 and 15.\r\n- ROUNDUP(Value)\r\n- ROUNDDOWN(Value) \r\n- TRUNCATE(Value)\r\n</remarks><example>\r\nFor example: \"PointValue * ROUND(HoursWorked * WeeksWorked * (7/365),3) / FTHours\" \r\n</example>",
            "nullable": true
          },
          "hourlyDivisor": {
            "type": "number",
            "description": "Hours used to determine Hourly Rate",
            "format": "double"
          },
          "hourlyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Hourly Rates",
            "format": "int32"
          },
          "dailyDivisor": {
            "type": "number",
            "description": "Days used to determine Full time Daily Rate",
            "format": "double"
          },
          "dailyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Daily Rates",
            "format": "int32"
          },
          "annualDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Annual Salaries",
            "format": "int32"
          },
          "annualRoundingRule": {
            "$ref": "#/components/schemas/AnnualRoundingRule"
          },
          "incrementRule": {
            "$ref": "#/components/schemas/IncrementRule"
          },
          "requiresLondonAllowance": {
            "type": "boolean",
            "description": "Requires LA column to be completed on the spine"
          },
          "gradeEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable grades",
            "format": "date"
          },
          "pointEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable spinal points",
            "format": "date"
          },
          "useSpineHolidayRules": {
            "type": "boolean",
            "description": "Flag to include holiday entitlements in Payspine (Default false)"
          },
          "holidayEntitlements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.HolidayEntitlementUpdateRequest"
            },
            "description": "PaySpine Holiday Entitlements",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PaylineAnalysisCategoriesCodes": {
        "type": "object",
        "properties": {
          "analysisCategory": {
            "type": "string",
            "description": "AnalysisCategory Model",
            "nullable": true
          },
          "analysisCategoryCode": {
            "type": "string",
            "description": "AnalysisCategoryCode Model",
            "nullable": true
          },
          "analysisCategoryId": {
            "type": "string",
            "description": "AnalysisCategory Identifier",
            "format": "uuid",
            "nullable": true
          },
          "analysisCategoryCodeId": {
            "type": "string",
            "description": "AnalysisCategoryCode Identifier",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PaylineRequest": {
        "type": "object",
        "properties": {
          "analysisCategoryCodeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "List of analysis category code unique ids.",
            "nullable": true
          },
          "analysisCategoriesCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PaylineAnalysisCategoriesCodes"
            },
            "description": "List of analysis category ids and analysis category code ids.",
            "nullable": true
          },
          "annualValue": {
            "type": "number",
            "description": "The original value from the PayLine before we modify it.\r\nCurrently only used when CalculationType is set to FixedAnnualAmount\r\nso we can determine whether the payline value needs calculating or not.\r\nTo recalculate set to null with annual amount recorded in Value.",
            "format": "double",
            "nullable": true
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for: Leave Entries; Starters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling midway through a PayRun."
          },
          "calculateAsWhenPaid": {
            "type": "boolean",
            "description": "Indicates whether this pay line should be treated as When Paid rather than When Earned."
          },
          "childId": {
            "type": "string",
            "description": "The child id.",
            "format": "uuid",
            "nullable": true
          },
          "code": {
            "type": "string",
            "description": "The PayCode this line is assigned to. The PayCode determines the treatment of this line when it comes to NI, Tax and Pensions as well as whether it's a deduction or addition.",
            "nullable": true
          },
          "contributesToBasicPay": {
            "type": "boolean",
            "description": "Indicates whether this PayLine contributes to the basic pay of the Employee."
          },
          "costCentre": {
            "type": "string",
            "description": "CostCentre code which we want to override in the payline.",
            "nullable": true
          },
          "costCentreId": {
            "type": "string",
            "description": "CostCentre uniqueId which we want to override in the payline.",
            "format": "uuid",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Department code which we want to override in the payline.",
            "nullable": true
          },
          "departmentId": {
            "type": "string",
            "description": "Department uniqueId which we want to override in the payline.",
            "format": "uuid",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "A description to accompany this line. It will be displayed on the payslip.",
            "nullable": true
          },
          "earnedFrom": {
            "type": "string",
            "description": "The earned from date.",
            "format": "date",
            "nullable": true
          },
          "earnedTo": {
            "type": "string",
            "description": "The earned to date.",
            "format": "date",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date the payline starts being calculated in the payrun.",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "description": "The date the payline stops being calculated in the payrun.",
            "format": "date",
            "nullable": true
          },
          "employeeRoleReference": {
            "type": "string",
            "description": "The employee role reference.",
            "nullable": true
          },
          "fullTimeAnnualValue": {
            "type": "number",
            "description": "Used to set the Full Time Annual Value for the payline.",
            "format": "double"
          },
          "ignoreInitialBackPay": {
            "type": "boolean",
            "description": "Skip the automatic backpay calculation on the first pay run, if the addition/deduction had been paid outside of Staffology.\r\nIf set to false, the automatic backpay calculation will be performed on the first pay run."
          },
          "isAutoGeneratedBasicPayLine": {
            "type": "boolean",
            "description": "If the PayLine is an auto-generated basic payline."
          },
          "isAutomaticBackPay": {
            "type": "boolean",
            "description": "Automatically calculate backpay and add or modify the necessary pay lines for this addition/deduction when a pay run is created.\r\nApplicable only to employee level addition/deduction pay lines.\r\nIf set to false then you must manually handle the calculation and adding of backpay lines."
          },
          "isNetToGross": {
            "type": "boolean",
            "description": "If the PayLine is a fixed amount addition without multiplier then this property may be set to true so that the amount of the addition to be considered a take home pay target."
          },
          "isZeroHoursTeachersBackPayLine": {
            "type": "boolean",
            "description": "If the PayLine is a zero-hours teachers back-pay line."
          },
          "londonAllowanceId": {
            "type": "integer",
            "description": "Used to set London allowance id for payline.",
            "format": "int32",
            "nullable": true
          },
          "multiplier": {
            "type": "number",
            "description": "If the related PayCode has a MultiplierType other than None then this field will be used as number of days or hours.",
            "format": "double",
            "nullable": true
          },
          "netToGrossDiscrepancy": {
            "type": "number",
            "description": "The discrepancy between the targeted and the calculated grossed up value during a net to gross calculation.",
            "format": "double",
            "nullable": true
          },
          "payGrade": {
            "type": "string",
            "description": "PayGrade for imported pay lines",
            "nullable": true
          },
          "paySpine": {
            "type": "string",
            "description": "PaySpine for imported pay lines",
            "nullable": true
          },
          "paySpineGradeId": {
            "type": "string",
            "description": "The Id of the associated pay spine grade.",
            "format": "uuid",
            "nullable": true
          },
          "paySpineId": {
            "type": "string",
            "description": "The Id of the associated pay spine.",
            "format": "uuid",
            "nullable": true
          },
          "percentageOfEffectiveDays": {
            "type": "number",
            "description": "The percentage of working days the effective dates span for pro-rata values, calculated and set during each payrun.",
            "format": "double",
            "nullable": true
          },
          "rate": {
            "type": "number",
            "description": "If the related PayCode has a MultiplierType other than None then this field will be used as the rate per day or hour. Otherwise it isn't used.",
            "format": "double",
            "nullable": true
          },
          "roleId": {
            "type": "string",
            "description": "The employee role which is associated with this pay line.\r\nIf set to null, the pay line is not related with a role.",
            "format": "uuid",
            "nullable": true
          },
          "spinePoint": {
            "type": "string",
            "description": "SpinePoint for imported pay lines",
            "nullable": true
          },
          "spinalPointId": {
            "type": "string",
            "description": "The Id of the associated spinal point.",
            "format": "uuid",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags related to this line.",
            "nullable": true
          },
          "targetNetToGrossValue": {
            "type": "number",
            "description": "The orginal net fixed addition amount that is considered to be a take home pay target.",
            "format": "double",
            "nullable": true
          },
          "totalPaidDays": {
            "type": "number",
            "description": "The total paid days.",
            "format": "double",
            "nullable": true
          },
          "totalWorkingDays": {
            "type": "number",
            "description": "The total working days.",
            "format": "double",
            "nullable": true
          },
          "value": {
            "type": "number",
            "description": "The amount to add or deduct (whether it is a deduction or addition depends on the PayCode used).\r\nIf the PayCode has a CalculationType other than FixedAmount then this field will be a percentage.\r\nIf the PayCode has a MultiplierType other than None then this field will be readonly and automatically calculated.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.PaymentImportRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Optional. If value is provided then update else create payline.",
            "format": "uuid",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "description": "The payroll code of the employee to update",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "The amount regularly paid to the Employee",
            "format": "double",
            "nullable": true
          },
          "hours": {
            "type": "number",
            "description": "Payment Hours",
            "format": "double",
            "nullable": true
          },
          "days": {
            "type": "number",
            "description": "Payment Days",
            "format": "double",
            "nullable": true
          },
          "percentage": {
            "type": "number",
            "description": "Perentage",
            "format": "double",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "description": "If you want to override the PayCode used for the Basic Pay then set the code here, otherwise leave this blank and the default will be used.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "description": "EffectiveFrom date for imported pay lines",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "description": "EffectiveTo date for imported pay lines",
            "format": "date",
            "nullable": true
          },
          "isNetToGross": {
            "type": "boolean",
            "description": "IsNetToGross (True/False)"
          },
          "department": {
            "type": "string",
            "description": "Associated department of the employee",
            "nullable": true
          },
          "costCentre": {
            "type": "string",
            "description": "Associated costcentre of the employee",
            "nullable": true
          },
          "isAutomaticBackPay": {
            "type": "boolean",
            "description": "IsAutomaticBackPay for imported pay lines \r\nOnly import if 'Effective date salary changes' is enabled"
          },
          "isAlreadyPaid": {
            "type": "boolean",
            "description": "IsAlreadyPaid\r\nOnly import if 'Effective date salary changes' is enabled"
          },
          "contributesToBasicPay": {
            "type": "boolean",
            "description": "ContributesToBasicPay for imported pay lines\r\nOnly import if 'Effective date salary changes' is enabled"
          },
          "proRataAdjustments": {
            "type": "boolean",
            "description": "ProRataAdjustments (True/False)"
          },
          "roleReference": {
            "type": "string",
            "description": "This is the unique reference of the Role that the employee is assigned to.\r\nOnly import if 'Multi-Role Settings' are enabled",
            "nullable": true
          },
          "paySpine": {
            "type": "string",
            "description": "PaySpine for imported pay lines\r\nOnly import if Pay Spines exist",
            "nullable": true
          },
          "payGrade": {
            "type": "string",
            "description": "PayGrade for imported pay lines \r\nOnly import if Pay Spines exist",
            "nullable": true
          },
          "spinalPoint": {
            "type": "string",
            "description": "SpinePoint for imported pay lines\r\nOnly import if Pay Spines exist",
            "nullable": true
          },
          "londonAllowance": {
            "$ref": "#/components/schemas/LondonAllowanceType"
          },
          "treatAsWhenPaid": {
            "type": "boolean",
            "description": "Only import if 'Education settings' are enabled"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayrollSquadEmployerRequest": {
        "type": "object",
        "properties": {
          "payrollSquadId": {
            "type": "string",
            "description": "UniqueId of Payroll Squad",
            "format": "uuid"
          },
          "employerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "UniqueIds of Employers",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PayrollSquadEmployerResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Payroll Squad Employer Id",
            "format": "uuid"
          },
          "employerId": {
            "type": "string",
            "description": "Employer Id",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayrollSquadMemberRequest": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Payroll Squad Selected UserId",
            "format": "uuid"
          },
          "payrollSquadId": {
            "type": "string",
            "description": "UniqueId of Payroll Squad",
            "format": "uuid"
          },
          "role": {
            "$ref": "#/components/schemas/UserRole"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayrollSquadMemberResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Payroll Squad Member Identifier",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "description": "Payroll Squad User Identifier",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "Payroll Squad Member DisplayName",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "Payroll Squad Member EmailAddress",
            "nullable": true
          },
          "lastLogin": {
            "type": "string",
            "description": "Payroll Squad Member LastLogin",
            "format": "date",
            "nullable": true
          },
          "role": {
            "$ref": "#/components/schemas/UserRole"
          }
        },
        "additionalProperties": false
      },
      "Contract.PayrollSquadRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of Payroll Squad",
            "nullable": true
          },
          "employerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Employer ids of Payroll Squad",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PayrollSquadResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Payroll Squad Identifier",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "description": "Current Tenant Id",
            "format": "uuid"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PayrollSquadMemberResponse"
            },
            "description": "List of all Members",
            "nullable": true
          },
          "employers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.EmployerBase"
            },
            "description": "List of all Employers",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Name of Payroll Squad",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PendingLettersCountResponse": {
        "type": "object",
        "properties": {
          "pendingLettersCount": {
            "type": "integer",
            "format": "int32"
          },
          "requiringAePostponementLettersCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionAdministratorRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "telephone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionAdministratorResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "telephone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionProviderRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "accountNo": {
            "type": "string",
            "nullable": true
          },
          "portal": {
            "type": "string",
            "nullable": true
          },
          "website": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "papdisVersion": {
            "$ref": "#/components/schemas/PapdisVersion"
          },
          "papdisProviderId": {
            "type": "string",
            "nullable": true
          },
          "papdisEmployerId": {
            "type": "string",
            "nullable": true
          },
          "csvFormat": {
            "$ref": "#/components/schemas/PensionCsvFormat"
          },
          "excludeNilPaidFromContributions": {
            "type": "boolean",
            "description": "If we're sending contributions to an external provider then we'll include all employees that were on the payrun.\r\nIf you want to exclude employees that don't have any contributions to report then set this to true."
          },
          "payPeriodDateAdjustment": {
            "type": "integer",
            "description": "If you need to adjust the reported dates of the contributions then you can do so by setting a non-zero value here.\r\nA negative value of will move the date back in time.",
            "format": "int32"
          },
          "miscBoolean1": {
            "type": "boolean",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it indicates whether or not contributions are reported as \"Tax Weekly/Monthly\" rather than just \"Weekly/Monthly\""
          },
          "miscBoolean2": {
            "type": "boolean",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it indicates whether or not to approve payments after submitting contributions"
          },
          "miscString1": {
            "type": "string",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it dictates the PaymentSource.",
            "nullable": true
          },
          "miscString2": {
            "type": "string",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.",
            "nullable": true
          },
          "optOutWindow": {
            "type": "integer",
            "description": "The number of days or months that an employee has to Opt out after being enrolled",
            "format": "int32"
          },
          "optOutWindowIsMonths": {
            "type": "boolean",
            "description": "Determines whether the value given for OptOutWindow is in Months (true) or days (false)"
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionProviderResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "accountNo": {
            "type": "string",
            "nullable": true
          },
          "portal": {
            "type": "string",
            "nullable": true
          },
          "website": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "papdisVersion": {
            "$ref": "#/components/schemas/PapdisVersion"
          },
          "papdisProviderId": {
            "type": "string",
            "nullable": true
          },
          "papdisEmployerId": {
            "type": "string",
            "nullable": true
          },
          "csvFormat": {
            "$ref": "#/components/schemas/PensionCsvFormat"
          },
          "excludeNilPaidFromContributions": {
            "type": "boolean",
            "description": "If we're sending contributions to an external provider then we'll include all employees that were on the payrun.\r\nIf you want to exclude employees that don't have any contributions to report then set this to true."
          },
          "payPeriodDateAdjustment": {
            "type": "integer",
            "description": "If you need to adjust the reported dates of the contributions then you can do so by setting a non-zero value here.\r\nA negative value of will move the date back in time.",
            "format": "int32"
          },
          "miscBoolean1": {
            "type": "boolean",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it indicates whether or not contributions are reported as \"Tax Weekly/Monthly\" rather than just \"Weekly/Monthly\""
          },
          "miscBoolean2": {
            "type": "boolean",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it indicates whether or not to approve payments after submitting contributions"
          },
          "miscString1": {
            "type": "string",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it dictates the PaymentSource.",
            "nullable": true
          },
          "miscString2": {
            "type": "string",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.",
            "nullable": true
          },
          "optOutWindow": {
            "type": "integer",
            "description": "The number of days or months that an employee has to Opt out after being enrolled",
            "format": "int32"
          },
          "optOutWindowIsMonths": {
            "type": "boolean",
            "description": "Determines whether the value given for OptOutWindow is in Months (true) or days (false)"
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeNominalCodeMappingRequest": {
        "type": "object",
        "properties": {
          "nominalCode": {
            "type": "string",
            "nullable": true
          },
          "nominalName": {
            "type": "string",
            "nullable": true
          },
          "journalNarrative": {
            "type": "string",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeNominalCodeMappingResponse": {
        "type": "object",
        "properties": {
          "nominalCode": {
            "type": "string",
            "description": "Nominal Code for pension scheme",
            "nullable": true
          },
          "nominalName": {
            "type": "string",
            "description": "Nominal Name",
            "nullable": true
          },
          "journalNarrative": {
            "type": "string",
            "description": "Journal narrative description.",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeReportOptionsLgpsCivicaUpmRequest": {
        "type": "object",
        "properties": {
          "payrollNumber": {
            "$ref": "#/components/schemas/LgpsCivicaPayrollNumber"
          },
          "casualHours": {
            "$ref": "#/components/schemas/LgpsCivicaCasualHours"
          },
          "omitHeaderLine": {
            "type": "boolean"
          },
          "includeFolderNo": {
            "type": "boolean"
          },
          "excludeSchoolEmployerName": {
            "type": "boolean"
          },
          "addressesForNewJoinersOnly": {
            "type": "boolean"
          },
          "proRatePtHoursWeeksWorked": {
            "type": "boolean"
          },
          "fullTimeHoursAsOneHundred": {
            "type": "boolean"
          },
          "includeWeeksWorkedColumns": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeReportOptionsLgpsCivicaUpmResponse": {
        "type": "object",
        "properties": {
          "payrollNumber": {
            "$ref": "#/components/schemas/LgpsCivicaPayrollNumber"
          },
          "casualHours": {
            "$ref": "#/components/schemas/LgpsCivicaCasualHours"
          },
          "omitHeaderLine": {
            "type": "boolean"
          },
          "includeFolderNo": {
            "type": "boolean"
          },
          "excludeSchoolEmployerName": {
            "type": "boolean"
          },
          "addressesForNewJoinersOnly": {
            "type": "boolean"
          },
          "proRatePtHoursWeeksWorked": {
            "type": "boolean"
          },
          "fullTimeHoursAsOneHundred": {
            "type": "boolean"
          },
          "includeWeeksWorkedColumns": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeReportOptionsLgpsIConnectRequest": {
        "type": "object",
        "properties": {
          "fileType": {
            "$ref": "#/components/schemas/LgpsIConnectFileType"
          },
          "payrollReference1": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "payrollReference2": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "payrollReference3": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "populateEmailAddress": {
            "type": "boolean"
          },
          "populateTelephoneNumber": {
            "type": "boolean"
          },
          "populateMobileNumber": {
            "type": "boolean"
          },
          "populateWorksPlaceName": {
            "type": "boolean"
          },
          "populateWorksAddress": {
            "type": "boolean"
          },
          "populateWorksEmailAddress": {
            "type": "boolean"
          },
          "includeEmploymentBreaks": {
            "type": "boolean"
          },
          "breakReasonSmpIndicatorOnly": {
            "type": "boolean"
          },
          "populateMaritalStatus": {
            "type": "boolean"
          },
          "includeAeQualifyingEarnings": {
            "type": "boolean"
          },
          "proRatePtHoursByTermTimeWeeks": {
            "type": "boolean"
          },
          "ignoreTermTimeWeeksForFteFinalPay": {
            "type": "boolean"
          },
          "showFteAnnualSalaryForFteFinalPay": {
            "type": "boolean"
          },
          "casualStaffHoursAsOne": {
            "type": "boolean"
          },
          "casualStaffIndicatorAsY": {
            "type": "boolean"
          },
          "ignoreHours": {
            "type": "boolean"
          },
          "forceUpperCase": {
            "type": "boolean"
          },
          "salaryType": {
            "$ref": "#/components/schemas/LgpsIConnectSalaryType"
          },
          "customText": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeReportOptionsLgpsIConnectResponse": {
        "type": "object",
        "properties": {
          "fileType": {
            "$ref": "#/components/schemas/LgpsIConnectFileType"
          },
          "payrollReference1": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "payrollReference2": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "payrollReference3": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "populateEmailAddress": {
            "type": "boolean"
          },
          "populateTelephoneNumber": {
            "type": "boolean"
          },
          "populateMobileNumber": {
            "type": "boolean"
          },
          "populateWorksPlaceName": {
            "type": "boolean"
          },
          "populateWorksAddress": {
            "type": "boolean"
          },
          "populateWorksEmailAddress": {
            "type": "boolean"
          },
          "includeEmploymentBreaks": {
            "type": "boolean"
          },
          "breakReasonSmpIndicatorOnly": {
            "type": "boolean"
          },
          "populateMaritalStatus": {
            "type": "boolean"
          },
          "includeAeQualifyingEarnings": {
            "type": "boolean"
          },
          "proRatePtHoursByTermTimeWeeks": {
            "type": "boolean"
          },
          "ignoreTermTimeWeeksForFteFinalPay": {
            "type": "boolean"
          },
          "showFteAnnualSalaryForFteFinalPay": {
            "type": "boolean"
          },
          "casualStaffHoursAsOne": {
            "type": "boolean"
          },
          "casualStaffIndicatorAsY": {
            "type": "boolean"
          },
          "ignoreHours": {
            "type": "boolean"
          },
          "forceUpperCase": {
            "type": "boolean"
          },
          "salaryType": {
            "$ref": "#/components/schemas/LgpsIConnectSalaryType"
          },
          "customText": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "$ref": "#/components/schemas/Contract.PensionProviderRequest"
          },
          "administrator": {
            "$ref": "#/components/schemas/Contract.PensionAdministratorRequest"
          },
          "pensionRule": {
            "$ref": "#/components/schemas/PensionRule"
          },
          "qualifyingScheme": {
            "type": "boolean",
            "description": "Set to true if this is a Qualifying Scheme for Auto Enrolment"
          },
          "disableAeLetters": {
            "type": "boolean",
            "description": "Set to true if the provider deals with AutoEnrolment Letters and therefore the system should not generate them"
          },
          "subtractBasicRateTax": {
            "type": "boolean"
          },
          "payMethod": {
            "$ref": "#/components/schemas/PayMethod"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/Contract.BankDetails"
          },
          "useCustomPayCodes": {
            "type": "boolean",
            "description": "If set to true then rather than using the setting on the PayCode to determine if the pay is pensionable\r\nwe'll instead treat it as pensionable if the Code is included in CustomPayCodes"
          },
          "useCustomPayCodesForTierablePay": {
            "type": "boolean",
            "description": "If set to true then rather than using the setting on the PayCode to determine if the pay is tierable\r\nwe'll instead treat it as tierable if the Code is included in TierablePayCustomPayCodes"
          },
          "customPayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If UseCustomPayCodes is set to true then this contains a list of PayCodes.Code\r\nthat we'll treat as being pensionable.",
            "nullable": true
          },
          "tierablePayCustomPayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If UseCustomPayCodesForTierablePay is set to true then this contains a list of PayCodes.Code\r\nthat we'll treat as being tierable.",
            "nullable": true
          },
          "workerGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.WorkerGroupRequest"
            },
            "description": "A list of WorkerGroups for this Pension. There must always be at least one WorkerGroup",
            "nullable": true
          },
          "externalDataProviderId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "externalDataCompany": {
            "$ref": "#/components/schemas/Contract.ExternalDataCompanyRequest"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "payCodeType": {
            "$ref": "#/components/schemas/PensionPayCode"
          },
          "tierablePayPayCodeType": {
            "$ref": "#/components/schemas/PensionPayCode"
          },
          "payCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "tierablePayPayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "paymentDateRule": {
            "$ref": "#/components/schemas/PaymentDateRule"
          },
          "paymentDateDayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "paymentDateDayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reportOptionsLgpsIConnect": {
            "$ref": "#/components/schemas/Contract.PensionSchemeReportOptionsLgpsIConnectRequest"
          },
          "reportOptionsLgpsCivicaUpm": {
            "$ref": "#/components/schemas/Contract.PensionSchemeReportOptionsLgpsCivicaUpmRequest"
          },
          "deficitValueOrdinal": {
            "type": "integer",
            "description": "The Ordinal used to identify the PaySchedule which the Deficit will be against",
            "format": "int32",
            "nullable": true
          },
          "deficitValue": {
            "type": "number",
            "description": "The Defict value that will be deducted in a PaySchedule",
            "format": "double",
            "nullable": true
          },
          "includeDeficitValue": {
            "type": "boolean",
            "description": "Set to true if this a Deficit Payment needs to be assigned to a PaySchedule"
          },
          "deficitValuePayPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "nominalCodeMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PensionSchemeNominalCodeMappingRequest"
            },
            "description": "The PensionSchemeNominalCodeMappings used to map the PayCodes to a PensionScheme for the journal configuration",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSchemeResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "$ref": "#/components/schemas/Contract.PensionProviderResponse"
          },
          "administrator": {
            "$ref": "#/components/schemas/Contract.PensionAdministratorResponse"
          },
          "pensionRule": {
            "$ref": "#/components/schemas/PensionRule"
          },
          "qualifyingScheme": {
            "type": "boolean",
            "description": "Set to true if this is a Qualifying Scheme for Auto Enrolment"
          },
          "disableAeLetters": {
            "type": "boolean",
            "description": "Set to true if the provider deals with AutoEnrolment Letters and therefore the system should not generate them"
          },
          "subtractBasicRateTax": {
            "type": "boolean"
          },
          "payMethod": {
            "$ref": "#/components/schemas/PayMethod"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/Contract.BankDetails"
          },
          "useCustomPayCodes": {
            "type": "boolean",
            "description": "If set to true then rather than using the setting on the PayCode to determine if the pay is pensionable\r\nwe'll instead treat it as pensionable if the Code is included in CustomPayCodes"
          },
          "useCustomPayCodesForTierablePay": {
            "type": "boolean",
            "description": "If set to true then rather than using the setting on the PayCode to determine if the pay is tierable\r\nwe'll instead treat it as tierable if the Code is included in TierablePayCustomPayCodes"
          },
          "customPayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If UseCustomPayCodes is set to true then this contains a list of PayCodes.Code\r\nthat we'll treat as being pensionable.",
            "nullable": true
          },
          "tierablePayCustomPayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If UseCustomPayCodesForTierablePay is set to true then this contains a list of PayCodes.Code\r\nthat we'll treat as being tierable.",
            "nullable": true
          },
          "workerGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.WorkerGroupResponse"
            },
            "description": "A list of WorkerGroups for this Pension. There must always be at least one WorkerGroup",
            "nullable": true
          },
          "externalDataProviderId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "externalDataCompany": {
            "$ref": "#/components/schemas/Contract.ExternalDataCompanyResponse"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "payCodeType": {
            "$ref": "#/components/schemas/PensionPayCode"
          },
          "tierablePayPayCodeType": {
            "$ref": "#/components/schemas/PensionPayCode"
          },
          "payCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "tierablePayPayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "paymentDateRule": {
            "$ref": "#/components/schemas/PaymentDateRule"
          },
          "paymentDateDayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "paymentDateDayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reportOptionsLgpsIConnect": {
            "$ref": "#/components/schemas/Contract.PensionSchemeReportOptionsLgpsIConnectResponse"
          },
          "reportOptionsLgpsCivicaUpm": {
            "$ref": "#/components/schemas/Contract.PensionSchemeReportOptionsLgpsCivicaUpmResponse"
          },
          "deficitValueOrdinal": {
            "type": "integer",
            "description": "The Ordinal used to identify the PaySchedule which the Deficit will be against",
            "format": "int32",
            "nullable": true
          },
          "deficitValue": {
            "type": "number",
            "description": "The Defict value that will be deducted in a PaySchedule",
            "format": "double",
            "nullable": true
          },
          "includeDeficitValue": {
            "type": "boolean",
            "description": "Set to true if this a Deficit Payment needs to be assigned to a PaySchedule"
          },
          "deficitValuePayPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "nominalCodeMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.PensionSchemeNominalCodeMappingResponse"
            },
            "description": "The PensionSchemeNominalCodeMappings used to map the PayCodes to a PensionScheme for the journal configuration",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSelectionRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "pensionSchemeId": {
            "type": "string",
            "format": "uuid"
          },
          "workerGroupId": {
            "type": "string",
            "format": "uuid"
          },
          "pensionScheme": {
            "$ref": "#/components/schemas/Contract.PensionSchemeRequest"
          },
          "autoEnrolled": {
            "type": "boolean",
            "description": "[readonly] Is True if the employee joined this Pension due to an AutoEnrolment action"
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionSelectionResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "pensionSchemeId": {
            "type": "string",
            "format": "uuid"
          },
          "workerGroupId": {
            "type": "string",
            "format": "uuid"
          },
          "pensionScheme": {
            "$ref": "#/components/schemas/Contract.PensionSchemeResponse"
          },
          "autoEnrolled": {
            "type": "boolean",
            "description": "[readonly] Is True if the employee joined this Pension due to an AutoEnrolment action"
          }
        },
        "additionalProperties": false
      },
      "Contract.PensionerPayroll": {
        "type": "object",
        "properties": {
          "inReceiptOfPension": {
            "type": "boolean",
            "description": "If set to true then the FPS will have the OccPenInd flag set to 'yes'"
          },
          "bereaved": {
            "type": "boolean",
            "description": "Indicator that Occupational Pension is being paid because they are a recently bereaved Spouse/Civil Partner"
          },
          "amount": {
            "type": "number",
            "description": "Annual amount of occupational pension",
            "format": "double"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of occupational Pension",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.PersonalDetailsRequest": {
        "required": [
          "dateOfBirth",
          "gender",
          "maritalStatus"
        ],
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "maritalStatus": {
            "$ref": "#/components/schemas/MaritalStatus"
          },
          "title": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "middleName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "alternativeEmail": {
            "maxLength": 100,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "previousSurName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "email": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "emailPayslip": {
            "type": "boolean",
            "description": "If set to true then the employees Payslip will be sent by email when a PayRun is finalised."
          },
          "pdfPassword": {
            "type": "string",
            "description": "Set the password to be used on PDFs. If blank then we'll create a password based on the PdfPasswordType property.",
            "nullable": true
          },
          "pdfPasswordType": {
            "$ref": "#/components/schemas/PdfPasswordType"
          },
          "emailStatement": {
            "type": "boolean",
            "description": "Only applicable to CIS Subcontractors. If set to true then we will automatically email a CIS Statement when a CIS300 is accepted."
          },
          "photoUrl": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "photoSasUrl": {
            "type": "string",
            "nullable": true
          },
          "mobile": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "niNumber": {
            "maxLength": 15,
            "type": "string",
            "nullable": true
          },
          "passportNumber": {
            "maxLength": 25,
            "type": "string",
            "nullable": true
          },
          "partnerDetails": {
            "$ref": "#/components/schemas/Contract.PartnerDetails"
          }
        },
        "additionalProperties": false
      },
      "Contract.PersonalDetailsResponse": {
        "required": [
          "dateOfBirth",
          "gender",
          "maritalStatus"
        ],
        "type": "object",
        "properties": {
          "statePensionAge": {
            "type": "integer",
            "description": "Automatically calculated.",
            "format": "int32"
          },
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "maritalStatus": {
            "$ref": "#/components/schemas/MaritalStatus"
          },
          "title": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "middleName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "alternativeEmail": {
            "maxLength": 100,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "previousSurName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "email": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "emailPayslip": {
            "type": "boolean",
            "description": "If set to true then the employees Payslip will be sent by email when a PayRun is finalised."
          },
          "pdfPassword": {
            "type": "string",
            "description": "Set the password to be used on PDFs. If blank then we'll create a password based on the PdfPasswordType property.",
            "nullable": true
          },
          "pdfPasswordType": {
            "$ref": "#/components/schemas/PdfPasswordType"
          },
          "emailStatement": {
            "type": "boolean",
            "description": "Only applicable to CIS Subcontractors. If set to true then we will automatically email a CIS Statement when a CIS300 is accepted."
          },
          "photoUrl": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "photoSasUrl": {
            "type": "string",
            "nullable": true
          },
          "mobile": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "niNumber": {
            "maxLength": 15,
            "type": "string",
            "nullable": true
          },
          "passportNumber": {
            "maxLength": 25,
            "type": "string",
            "nullable": true
          },
          "partnerDetails": {
            "$ref": "#/components/schemas/Contract.PartnerDetails"
          }
        },
        "additionalProperties": false
      },
      "Contract.ReapplyDpsNoticeResponse": {
        "type": "object",
        "properties": {
          "numberOfAppliedNotices": {
            "type": "integer",
            "format": "int32"
          },
          "numberOfFailedNotices": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Contract.ReportTemplateColumnRequest": {
        "type": "object",
        "properties": {
          "position": {
            "type": "integer",
            "description": "The position of the column in the template",
            "format": "int32"
          },
          "header": {
            "type": "string",
            "description": "The header text of the column",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "The content associated with the column",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/ReportTemplateColumnType"
          }
        },
        "additionalProperties": false
      },
      "Contract.ReportTemplateColumnResponse": {
        "type": "object",
        "properties": {
          "position": {
            "type": "integer",
            "description": "The position of the column in the template",
            "format": "int32"
          },
          "header": {
            "type": "string",
            "description": "The header text of the column",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "The content associated with the column",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/ReportTemplateColumnType"
          }
        },
        "additionalProperties": false
      },
      "Contract.ReportTemplateContentDictionaryResponse": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ReportTemplateColumnType"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.ReportTemplateContentResponse"
            },
            "description": "The content list of report template column",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.ReportTemplateContentResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the report template content",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "The value of the report template content, which will be enclosed in curly braces",
            "nullable": true
          },
          "groupName": {
            "type": "string",
            "description": "Group name of the report template content",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.ReportTemplateRequest": {
        "required": [
          "templateName"
        ],
        "type": "object",
        "properties": {
          "templateName": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the report template"
          },
          "description": {
            "type": "string",
            "description": "The description of the report template",
            "nullable": true
          },
          "reportTemplateColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.ReportTemplateColumnRequest"
            },
            "description": "The list of the report template columns",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.ReportTemplateResponse": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Unique Id of report template column",
            "format": "uuid"
          },
          "userName": {
            "type": "string",
            "description": "Name of the user who created the report template",
            "nullable": true
          },
          "templateName": {
            "type": "string",
            "description": "Name of the report template",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description of the report template",
            "nullable": true
          },
          "reportTemplateColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.ReportTemplateColumnResponse"
            },
            "description": "List of the report template column",
            "nullable": true
          },
          "updatedDate": {
            "type": "string",
            "description": "Updated date of the report template column",
            "format": "date",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "description": "Created date of the report template column",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.RightToWork": {
        "type": "object",
        "properties": {
          "checked": {
            "type": "boolean"
          },
          "documentType": {
            "$ref": "#/components/schemas/RightToWorkDocumentType"
          },
          "documentRef": {
            "maxLength": 80,
            "type": "string",
            "nullable": true
          },
          "documentExpiry": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "note": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiAgentRequest": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "nullable": true
          },
          "company": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "contact": {
            "$ref": "#/components/schemas/Contract.RtiContactRequest"
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiAgentResponse": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "nullable": true
          },
          "company": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Contract.Address"
          },
          "contact": {
            "$ref": "#/components/schemas/Contract.RtiContactResponse"
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiContactRequest": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiContactResponse": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiEmployeeAddress": {
        "type": "object",
        "properties": {
          "line": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "nullable": true
          },
          "ukPostcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "foreignCountry": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiEmployeeName": {
        "type": "object",
        "properties": {
          "ttl": {
            "type": "string",
            "nullable": true
          },
          "fore": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "initials": {
            "type": "string",
            "nullable": true
          },
          "sur": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiSubmissionSettingsRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid"
          },
          "senderType": {
            "$ref": "#/components/schemas/RtiSenderType"
          },
          "senderId": {
            "type": "string",
            "description": "The SenderId used to submit RTI documents to HMRC",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The Password used to submit RTI documents to HMRC",
            "nullable": true
          },
          "excludeNilPaid": {
            "type": "boolean",
            "description": "Whether or not to include Employees paid a zero amount on your FPS"
          },
          "includeHashCrossRef": {
            "type": "boolean",
            "description": "[readonly] Whether or not the Bacs Cross Ref field is included on your FPS submissions\r\nThis is automatically set to true if you use a bank payments CSV format that supports it\r\nor set to false if not"
          },
          "autoSubmitFps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your FPS to HMRC whenever you finalise a PayRun"
          },
          "autoSubmitEps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your EPS to HMRC whenever you finalise a PayRun"
          },
          "testInLive": {
            "type": "boolean",
            "description": "Used for testing the RTI gateway. If set to true then the Document Type name will have \"-TIL\" appended to it"
          },
          "useTestGateway": {
            "type": "boolean",
            "description": "If set to true then your RTI documents will be sent to HMRCs test services instead of the live service"
          },
          "overrideTimestampValue": {
            "type": "string",
            "description": "If a value is provided then it will be used as the timestamp on the RTI submission. This would normally only be used for testing purposes.",
            "nullable": true
          },
          "contact": {
            "$ref": "#/components/schemas/Contract.RtiContactRequest"
          },
          "agent": {
            "$ref": "#/components/schemas/Contract.RtiAgentRequest"
          },
          "allowLinkedEps": {
            "type": "boolean",
            "description": "If set to true this will allow you to submit a combined Employer Payment Summary"
          },
          "shouldCompressFps": {
            "type": "boolean",
            "description": "If set to true this will compress the FPS before submitting to HMRC"
          }
        },
        "additionalProperties": false
      },
      "Contract.RtiSubmissionSettingsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "senderType": {
            "$ref": "#/components/schemas/RtiSenderType"
          },
          "senderId": {
            "type": "string",
            "description": "The SenderId used to submit RTI documents to HMRC",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "The Password used to submit RTI documents to HMRC",
            "nullable": true
          },
          "excludeNilPaid": {
            "type": "boolean",
            "description": "Whether or not to include Employees paid a zero amount on your FPS"
          },
          "includeHashCrossRef": {
            "type": "boolean",
            "description": "[readonly] Whether or not the Bacs Cross Ref field is included on your FPS submissions\r\nThis is automatically set to true if you use a bank payments CSV format that supports it\r\nor set to false if not"
          },
          "autoSubmitFps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your FPS to HMRC whenever you finalise a PayRun"
          },
          "autoSubmitEps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your EPS to HMRC whenever you finalise a PayRun"
          },
          "testInLive": {
            "type": "boolean",
            "description": "Used for testing the RTI gateway. If set to true then the Document Type name will have \"-TIL\" appended to it"
          },
          "useTestGateway": {
            "type": "boolean",
            "description": "If set to true then your RTI documents will be sent to HMRCs test services instead of the live service"
          },
          "overrideTimestampValue": {
            "type": "string",
            "description": "If a value is provided then it will be used as the timestamp on the RTI submission. This would normally only be used for testing purposes.",
            "nullable": true
          },
          "contact": {
            "$ref": "#/components/schemas/Contract.RtiContactResponse"
          },
          "agent": {
            "$ref": "#/components/schemas/Contract.RtiAgentResponse"
          },
          "allowLinkedEps": {
            "type": "boolean",
            "description": "If set to true this will allow you to submit a combined Employer Payment Summary"
          },
          "shouldCompressFps": {
            "type": "boolean",
            "description": "If set to true this will compress the FPS before submitting to HMRC"
          }
        },
        "additionalProperties": false
      },
      "Contract.SharedBankDetails": {
        "type": "object",
        "properties": {
          "countryOfBank": {
            "$ref": "#/components/schemas/CountryCode"
          },
          "iban": {
            "maxLength": 34,
            "type": "string",
            "nullable": true
          },
          "swift_Bic": {
            "maxLength": 11,
            "type": "string",
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "nullable": true
          },
          "bankBranch": {
            "type": "string",
            "nullable": true
          },
          "bankReference": {
            "type": "string",
            "nullable": true
          },
          "accountName": {
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "buildingSocietyRollNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.ShiftWorkingPatternDayRequest": {
        "type": "object",
        "properties": {
          "day": {
            "type": "integer",
            "format": "int32"
          },
          "isWorkingDay": {
            "type": "boolean"
          },
          "hours": {
            "type": "number",
            "format": "double"
          },
          "workingPatternHoursType": {
            "$ref": "#/components/schemas/WorkingPatternHoursType"
          }
        },
        "additionalProperties": false
      },
      "Contract.ShiftWorkingPatternDayResponse": {
        "type": "object",
        "properties": {
          "day": {
            "type": "integer",
            "format": "int32"
          },
          "isWorkingDay": {
            "type": "boolean"
          },
          "hours": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Contract.SpinalPointRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the Spinal Point",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Number of Spinal Point within the Scale",
            "format": "int32"
          },
          "annualValue": {
            "type": "number",
            "description": "Annual Value for the Spinal Point",
            "format": "double"
          },
          "annualValueAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point (Alternative Max Value)",
            "format": "double"
          },
          "annualValueLAInner": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Inner London Allowance",
            "format": "double"
          },
          "annualValueLAInnerAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Inner LA (Alt Max Value)",
            "format": "double"
          },
          "annualValueLAOuter": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Outer London Allowance",
            "format": "double"
          },
          "annualValueLAOuterAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Outer LA (Alt Max Value)",
            "format": "double"
          },
          "annualValueLAFringe": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Fringe London Allowance",
            "format": "double"
          },
          "annualValueLAFringeAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Fringe LA (Alt Max Value)",
            "format": "double"
          },
          "effectiveDate": {
            "type": "string",
            "description": "Date these rates became effective",
            "format": "date"
          },
          "predecessorId": {
            "type": "string",
            "description": "Spinal point predecessorId",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.SpinalPointResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Spinal Point identifier",
            "format": "uuid"
          },
          "finalAnnualValue": {
            "type": "number",
            "description": "Spinal Point Final Annual Value",
            "format": "double"
          },
          "name": {
            "type": "string",
            "description": "Name of the Spinal Point",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Number of Spinal Point within the Scale",
            "format": "int32"
          },
          "annualValue": {
            "type": "number",
            "description": "Annual Value for the Spinal Point",
            "format": "double"
          },
          "annualValueAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point (Alternative Max Value)",
            "format": "double"
          },
          "annualValueLAInner": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Inner London Allowance",
            "format": "double"
          },
          "annualValueLAInnerAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Inner LA (Alt Max Value)",
            "format": "double"
          },
          "annualValueLAOuter": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Outer London Allowance",
            "format": "double"
          },
          "annualValueLAOuterAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Outer LA (Alt Max Value)",
            "format": "double"
          },
          "annualValueLAFringe": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Fringe London Allowance",
            "format": "double"
          },
          "annualValueLAFringeAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Fringe LA (Alt Max Value)",
            "format": "double"
          },
          "effectiveDate": {
            "type": "string",
            "description": "Date these rates became effective",
            "format": "date"
          },
          "predecessorId": {
            "type": "string",
            "description": "Spinal point predecessorId",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.SpinalPointUpdateRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Name of the Spinal Point",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Number of Spinal Point within the Scale",
            "format": "int32"
          },
          "annualValue": {
            "type": "number",
            "description": "Annual Value for the Spinal Point",
            "format": "double"
          },
          "annualValueAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point (Alternative Max Value)",
            "format": "double"
          },
          "annualValueLAInner": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Inner London Allowance",
            "format": "double"
          },
          "annualValueLAInnerAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Inner LA (Alt Max Value)",
            "format": "double"
          },
          "annualValueLAOuter": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Outer London Allowance",
            "format": "double"
          },
          "annualValueLAOuterAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Outer LA (Alt Max Value)",
            "format": "double"
          },
          "annualValueLAFringe": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Fringe London Allowance",
            "format": "double"
          },
          "annualValueLAFringeAltMax": {
            "type": "number",
            "description": "Annual Value for the Spinal Point Fringe LA (Alt Max Value)",
            "format": "double"
          },
          "effectiveDate": {
            "type": "string",
            "description": "Date these rates became effective",
            "format": "date"
          },
          "predecessorId": {
            "type": "string",
            "description": "Spinal point predecessorId",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.SpineAllowanceRequest": {
        "type": "object",
        "properties": {
          "allowanceName": {
            "type": "string",
            "description": "Name of Allowance",
            "nullable": true
          },
          "allowanceType": {
            "$ref": "#/components/schemas/AllowanceType"
          },
          "allowanceUsualAnnualValue": {
            "type": "number",
            "description": "Value of Allowance Usual Annual",
            "format": "double"
          },
          "allowanceRangeLowerValue": {
            "type": "number",
            "description": "Value of Allowance Range Lower",
            "format": "double"
          },
          "allowanceRangeUpperValue": {
            "type": "number",
            "description": "Value of Allowance Range Upper",
            "format": "double"
          },
          "allowanceEffectiveDate": {
            "type": "string",
            "description": "Allowance Effective Date",
            "format": "date"
          },
          "allowanceAlwaysFTE": {
            "type": "boolean",
            "description": "Allowance Always FTE or Not"
          },
          "payCode": {
            "type": "string",
            "description": "Pay Code",
            "nullable": true
          },
          "payCodeTitle": {
            "type": "string",
            "description": "Pay Code Title",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.SpineAllowanceResponse": {
        "type": "object",
        "properties": {
          "allowanceName": {
            "type": "string",
            "description": "Name of Allowance",
            "nullable": true
          },
          "allowanceType": {
            "$ref": "#/components/schemas/AllowanceType"
          },
          "allowanceUsualAnnualValue": {
            "type": "number",
            "description": "Value of Allowance Usual Annual",
            "format": "double"
          },
          "allowanceRangeLowerValue": {
            "type": "number",
            "description": "Value of Allowance Range Lower",
            "format": "double"
          },
          "allowanceRangeUpperValue": {
            "type": "number",
            "description": "Value of Allowance Range Upper",
            "format": "double"
          },
          "allowanceEffectiveDate": {
            "type": "string",
            "description": "Allowance Effective Date",
            "format": "date"
          },
          "allowanceAlwaysFTE": {
            "type": "boolean",
            "description": "Allowance Always FTE or Not"
          },
          "uniqueId": {
            "type": "string",
            "description": "Spine Allowance identifier",
            "format": "uuid"
          },
          "payCode": {
            "type": "string",
            "description": "Pay Code",
            "nullable": true
          },
          "payCodeTitle": {
            "type": "string",
            "description": "Pay Code Title",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.SpineAllowanceUpdateRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Spine Allowance identifier",
            "format": "uuid"
          },
          "allowanceName": {
            "type": "string",
            "description": "Name of Allowance",
            "nullable": true
          },
          "allowanceType": {
            "$ref": "#/components/schemas/AllowanceType"
          },
          "allowanceUsualAnnualValue": {
            "type": "number",
            "description": "Value of Allowance Usual Annual",
            "format": "double"
          },
          "allowanceRangeLowerValue": {
            "type": "number",
            "description": "Value of Allowance Range Lower",
            "format": "double"
          },
          "allowanceRangeUpperValue": {
            "type": "number",
            "description": "Value of Allowance Range Upper",
            "format": "double"
          },
          "allowanceEffectiveDate": {
            "type": "string",
            "description": "Allowance Effective Date",
            "format": "date"
          },
          "allowanceAlwaysFTE": {
            "type": "boolean",
            "description": "Allowance Always FTE or Not"
          },
          "payCode": {
            "type": "string",
            "description": "Pay Code",
            "nullable": true
          },
          "payCodeTitle": {
            "type": "string",
            "description": "Pay Code Title",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.StarterDetails": {
        "required": [
          "startDate",
          "starterDeclaration"
        ],
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "starterDeclaration": {
            "$ref": "#/components/schemas/StarterDeclaration"
          },
          "overseasEmployerDetails": {
            "$ref": "#/components/schemas/Contract.OverseasEmployerDetails"
          },
          "pensionerPayroll": {
            "$ref": "#/components/schemas/Contract.PensionerPayroll"
          }
        },
        "additionalProperties": false
      },
      "Contract.TaxAndNi": {
        "type": "object",
        "properties": {
          "niTable": {
            "type": "string",
            "description": "The appropriate NI letter for this Employee"
          },
          "secondaryClass1NotPayable": {
            "type": "boolean",
            "description": "If set to true then no Employer NI will be paid for this Employee"
          },
          "postgradLoan": {
            "type": "boolean",
            "description": "Set to true if the Employee needs to make Post Graduate Loan repayments"
          },
          "postgraduateLoanStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "postgraduateLoanEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "studentLoan": {
            "$ref": "#/components/schemas/StudentLoan"
          },
          "studentLoanStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "studentLoanEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "taxCode": {
            "type": "string",
            "description": "The Tax Code for this Employee",
            "nullable": true
          },
          "week1Month1": {
            "type": "boolean",
            "description": "Determines whether PAYE should be calculated on a Week1/Month1 basis instead of on a cumulative basis.\r\nThis is automatically set to false for any existing Employees when you start a new Tax Year."
          },
          "foreignTaxCredit": {
            "type": "boolean",
            "description": "If set to True you are enabling the possibility to enter an amount on payslip so you can reduce UK Tax liabilities."
          }
        },
        "additionalProperties": false
      },
      "Contract.TermCalendarRequest": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Title of the Term Calendar",
            "nullable": true
          },
          "academicYearStartMonth": {
            "$ref": "#/components/schemas/CalendarMonth"
          }
        },
        "additionalProperties": false
      },
      "Contract.TermCalendarResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Term Calendar identifier",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "Title of the Term Calendar",
            "nullable": true
          },
          "academicYearStartMonth": {
            "$ref": "#/components/schemas/CalendarMonth"
          }
        },
        "additionalProperties": false
      },
      "Contract.TermCalendarYearRequest": {
        "type": "object",
        "properties": {
          "autumnTermStartDate": {
            "type": "string",
            "description": "Autumn Term Start Date of Term Calendar Year View",
            "format": "date"
          },
          "autumnTermEndDate": {
            "type": "string",
            "description": "Autumn Term End Date of Term Calendar Year View",
            "format": "date"
          },
          "springTermStartDate": {
            "type": "string",
            "description": "Spring Term Start Date of Term Calendar Year View",
            "format": "date"
          },
          "springTermEndDate": {
            "type": "string",
            "description": "Spring Term End Date of Term Calendar Year View",
            "format": "date"
          },
          "summerTermStartDate": {
            "type": "string",
            "description": "Summer Term Start Date of Term Calendar Year View",
            "format": "date"
          },
          "summerTermEndDate": {
            "type": "string",
            "description": "Summer Term End Date of Term Calendar Year View",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.TermCalendarYearResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Term Calendar Year identifier",
            "format": "uuid"
          },
          "autumnTermStartDate": {
            "type": "string",
            "description": "Autumn Term Start Date of Term Calendar Year View",
            "format": "date"
          },
          "autumnTermEndDate": {
            "type": "string",
            "description": "Autumn Term End Date of Term Calendar Year View",
            "format": "date"
          },
          "springTermStartDate": {
            "type": "string",
            "description": "Spring Term Start Date of Term Calendar Year View",
            "format": "date"
          },
          "springTermEndDate": {
            "type": "string",
            "description": "Spring Term End Date of Term Calendar Year View",
            "format": "date"
          },
          "summerTermStartDate": {
            "type": "string",
            "description": "Summer Term Start Date of Term Calendar Year View",
            "format": "date"
          },
          "summerTermEndDate": {
            "type": "string",
            "description": "Summer Term End Date of Term Calendar Year View",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Contract.UmbrellaSettingsRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "chargePerTimesheet": {
            "type": "number",
            "format": "double"
          },
          "apprenticeshipLevyDednRate": {
            "type": "number",
            "format": "double"
          },
          "holidayRate": {
            "type": "number",
            "format": "double"
          },
          "dpsbCode": {
            "type": "string",
            "nullable": true
          },
          "expensesCode": {
            "type": "string",
            "nullable": true
          },
          "grossDeductionCode": {
            "type": "string",
            "nullable": true
          },
          "holidayCode": {
            "type": "string",
            "nullable": true
          },
          "cisFeeCode": {
            "type": "string",
            "nullable": true
          },
          "detailFeeInComment": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.UmbrellaSettingsResponse": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "chargePerTimesheet": {
            "type": "number",
            "format": "double"
          },
          "apprenticeshipLevyDednRate": {
            "type": "number",
            "format": "double"
          },
          "holidayRate": {
            "type": "number",
            "format": "double"
          },
          "dpsbCode": {
            "type": "string",
            "nullable": true
          },
          "expensesCode": {
            "type": "string",
            "nullable": true
          },
          "grossDeductionCode": {
            "type": "string",
            "nullable": true
          },
          "holidayCode": {
            "type": "string",
            "nullable": true
          },
          "cisFeeCode": {
            "type": "string",
            "nullable": true
          },
          "detailFeeInComment": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Contract.UpdateEmployeeRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique id of the object",
            "format": "uuid"
          },
          "personalDetails": {
            "$ref": "#/components/schemas/Contract.PersonalDetailsRequest"
          },
          "employmentDetails": {
            "$ref": "#/components/schemas/Contract.EmploymentDetailsRequest"
          },
          "autoEnrolment": {
            "$ref": "#/components/schemas/Contract.AutoEnrolmentRequest"
          },
          "leaveSettings": {
            "$ref": "#/components/schemas/Contract.EmployeeLeaveSettingsRequest"
          },
          "rightToWork": {
            "$ref": "#/components/schemas/Contract.RightToWork"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/Contract.BankDetails"
          },
          "payOptions": {
            "$ref": "#/components/schemas/Contract.PayOptionsRequest"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "holidaySchemeUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "evcId": {
            "type": "string",
            "description": "If set then this will be used as the EmployeeIDFromProduct sent to EVC in place of the standard EmployeeId.",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Pension Scheme that will be used for this employee.",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeName": {
            "type": "string",
            "description": "The name of the Pension Scheme that will be used for this employee.",
            "nullable": true
          },
          "defaultWorkerGroupUniqueId": {
            "type": "string",
            "description": "The UniqueId of the Worker Group that will be used for this employee.",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupName": {
            "type": "string",
            "description": "The name of the Worker Group that will be used for this employee.",
            "nullable": true
          },
          "sourceSystemId": {
            "maxLength": 50,
            "type": "string",
            "description": "Used by external systems so they can store an immutable reference.\r\nOnce this property is set it cannot be changed.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.VeteranDetails": {
        "type": "object",
        "properties": {
          "isVeteran": {
            "type": "boolean",
            "description": "Set to true if the employee is a veteran"
          },
          "firstCivilianEmploymentDate": {
            "type": "string",
            "description": "Date of Veteran's first civilian employment",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.WorkerGroupRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "contributionLevelType": {
            "$ref": "#/components/schemas/PensionContributionLevelType"
          },
          "employeeContribution": {
            "type": "number",
            "format": "double"
          },
          "employeeContributionIsPercentage": {
            "type": "boolean"
          },
          "employerContribution": {
            "type": "number",
            "format": "double"
          },
          "employerContributionIsPercentage": {
            "type": "boolean"
          },
          "employerContributionTopUpPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employee Contribution",
            "format": "double"
          },
          "employerContributionIncludesNiSaving": {
            "type": "boolean",
            "description": "Employer Contribution includes the Employers NI saving"
          },
          "employerContributionNiSavingPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employers NI saving",
            "format": "double"
          },
          "isAvc": {
            "type": "boolean",
            "description": "Determines whether the workergroup uses additonal voluntary contributions.\r\nThis property will automatically be set to true for the following Contribution Level Types: TpFasterAccrual, TpAdditionalPensionContributions, TpActuariallyAdjustedBenefits, TpFamilyBenefits, tpPastAddedYears, tpHigherSalaries, tpPreston, tpElectedFurtherEmployment, LgpsAdditionalPensionContributions, LgpsSharedAdditionalPensionContributions, LgpsAdditionalRegularContributions, LgpsAddedYearsContributions, LgpsSharedAdditionalPensionLumpSump, LgpsPartTimeBuyBack, PrudentialAVC."
          },
          "additionalVoluntaryContribution": {
            "type": "number",
            "description": "Any additional voluntary amount the employee contributes towards the pension. Could be a percentage or a fixed amount depending on AvcIsPercentage.",
            "format": "double",
            "nullable": true
          },
          "avcIsPercentage": {
            "type": "boolean",
            "description": "Determines whether the Value of the Additional Voluntary Contribution is a fixed amount or a percentage,",
            "nullable": true
          },
          "employerContributionNiSaving": {
            "type": "number",
            "description": "Employers NI Saving",
            "format": "double"
          },
          "customThreshold": {
            "type": "boolean"
          },
          "lowerLimit": {
            "type": "number",
            "format": "double"
          },
          "upperLimit": {
            "type": "number",
            "format": "double"
          },
          "papdisGroup": {
            "type": "string",
            "nullable": true
          },
          "papdisSubGroup": {
            "type": "string",
            "nullable": true
          },
          "localAuthorityNumber": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "schoolEmployerType": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "matIdentifier": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "matUniqueNumber": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "employerReference": {
            "type": "string",
            "nullable": true
          },
          "lgpsFund": {
            "$ref": "#/components/schemas/LgpsFund"
          },
          "workerGroupId": {
            "type": "string",
            "description": "[readonly]",
            "format": "uuid"
          },
          "assumedPensionablePay": {
            "$ref": "#/components/schemas/AssumedPensionablePay"
          },
          "pensionablePayDefinition": {
            "$ref": "#/components/schemas/PensionablePayDefinition"
          },
          "payslipDescription": {
            "type": "string",
            "description": "Used for overwriting the pension description that is displayed on the payslip",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.WorkerGroupResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "contributionLevelType": {
            "$ref": "#/components/schemas/PensionContributionLevelType"
          },
          "employeeContribution": {
            "type": "number",
            "format": "double"
          },
          "employeeContributionIsPercentage": {
            "type": "boolean"
          },
          "employerContribution": {
            "type": "number",
            "format": "double"
          },
          "employerContributionIsPercentage": {
            "type": "boolean"
          },
          "employerContributionTopUpPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employee Contribution",
            "format": "double"
          },
          "employerContributionIncludesNiSaving": {
            "type": "boolean",
            "description": "Employer Contribution includes the Employers NI saving"
          },
          "employerContributionNiSavingPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employers NI saving",
            "format": "double"
          },
          "isAvc": {
            "type": "boolean",
            "description": "Determines whether the workergroup uses additonal voluntary contributions.\r\nThis property will automatically be set to true for the following Contribution Level Types: TpFasterAccrual, TpAdditionalPensionContributions, TpActuariallyAdjustedBenefits, TpFamilyBenefits, tpPastAddedYears, tpHigherSalaries, tpPreston, tpElectedFurtherEmployment, LgpsAdditionalPensionContributions, LgpsSharedAdditionalPensionContributions, LgpsAdditionalRegularContributions, LgpsAddedYearsContributions, LgpsSharedAdditionalPensionLumpSump, LgpsPartTimeBuyBack, PrudentialAVC."
          },
          "additionalVoluntaryContribution": {
            "type": "number",
            "description": "Any additional voluntary amount the employee contributes towards the pension. Could be a percentage or a fixed amount depending on AvcIsPercentage.",
            "format": "double",
            "nullable": true
          },
          "avcIsPercentage": {
            "type": "boolean",
            "description": "Determines whether the Value of the Additional Voluntary Contribution is a fixed amount or a percentage,",
            "nullable": true
          },
          "employerContributionNiSaving": {
            "type": "number",
            "description": "Employers NI Saving",
            "format": "double"
          },
          "customThreshold": {
            "type": "boolean"
          },
          "lowerLimit": {
            "type": "number",
            "format": "double"
          },
          "upperLimit": {
            "type": "number",
            "format": "double"
          },
          "papdisGroup": {
            "type": "string",
            "nullable": true
          },
          "papdisSubGroup": {
            "type": "string",
            "nullable": true
          },
          "localAuthorityNumber": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "schoolEmployerType": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "matIdentifier": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "matUniqueNumber": {
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "employerReference": {
            "type": "string",
            "nullable": true
          },
          "lgpsFund": {
            "$ref": "#/components/schemas/LgpsFund"
          },
          "workerGroupId": {
            "type": "string",
            "format": "uuid"
          },
          "assumedPensionablePay": {
            "$ref": "#/components/schemas/AssumedPensionablePay"
          },
          "pensionablePayDefinition": {
            "$ref": "#/components/schemas/PensionablePayDefinition"
          },
          "payslipDescription": {
            "type": "string",
            "description": "Used for overwriting the pension description that is displayed on the payslip",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.WorkingPatternRequest": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "mon": {
            "type": "number",
            "format": "double"
          },
          "tue": {
            "type": "number",
            "format": "double"
          },
          "wed": {
            "type": "number",
            "format": "double"
          },
          "thu": {
            "type": "number",
            "format": "double"
          },
          "fri": {
            "type": "number",
            "format": "double"
          },
          "sat": {
            "type": "number",
            "format": "double"
          },
          "sun": {
            "type": "number",
            "format": "double"
          },
          "monIsWorkingDay": {
            "type": "boolean"
          },
          "tueIsWorkingDay": {
            "type": "boolean"
          },
          "wedIsWorkingDay": {
            "type": "boolean"
          },
          "thuIsWorkingDay": {
            "type": "boolean"
          },
          "friIsWorkingDay": {
            "type": "boolean"
          },
          "satIsWorkingDay": {
            "type": "boolean"
          },
          "sunIsWorkingDay": {
            "type": "boolean"
          },
          "totalHours": {
            "type": "number",
            "format": "double"
          },
          "contractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works, utilise for employees who aren't working full time.\r\nIf Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "fullTimeContractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works (Full Time). If Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "fullTimeContractedHours": {
            "type": "number",
            "description": "The amount of hours an employee works (Full Time). If Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "bankHolidays": {
            "$ref": "#/components/schemas/BankHolidayCollection"
          },
          "proRataRule": {
            "$ref": "#/components/schemas/ProRataRule"
          },
          "workingPatternHoursType": {
            "$ref": "#/components/schemas/WorkingPatternHoursType"
          },
          "isDefault": {
            "type": "boolean"
          },
          "workingPatternType": {
            "$ref": "#/components/schemas/WorkingPatternType"
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "shiftWorkingPatternDays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.ShiftWorkingPatternDayRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.WorkingPatternResponse": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "mon": {
            "type": "number",
            "format": "double"
          },
          "tue": {
            "type": "number",
            "format": "double"
          },
          "wed": {
            "type": "number",
            "format": "double"
          },
          "thu": {
            "type": "number",
            "format": "double"
          },
          "fri": {
            "type": "number",
            "format": "double"
          },
          "sat": {
            "type": "number",
            "format": "double"
          },
          "sun": {
            "type": "number",
            "format": "double"
          },
          "contractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works, utilise for employees who aren't working full time.\r\nIf Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "fullTimeContractedWeeks": {
            "type": "number",
            "description": "The amount of weeks an employee works (Full Time). If Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "fullTimeContractedHours": {
            "type": "number",
            "description": "The amount of hours an employee works (Full Time). If Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "bankHolidays": {
            "$ref": "#/components/schemas/BankHolidayCollection"
          },
          "proRataRule": {
            "$ref": "#/components/schemas/ProRataRule"
          },
          "bankHolidayDates": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "date-time"
            },
            "description": "[readonly] The dates that are classed as Bank Holidays for this Working Pattern",
            "nullable": true
          },
          "workingPatternHoursType": {
            "$ref": "#/components/schemas/WorkingPatternHoursType"
          },
          "isDefault": {
            "type": "boolean"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "totalHours": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "workingPatternType": {
            "$ref": "#/components/schemas/WorkingPatternType"
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "shiftWorkingPatternDays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract.ShiftWorkingPatternDayResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.YearsServiceEntitlementRequest": {
        "type": "object",
        "properties": {
          "yearsService": {
            "type": "integer",
            "description": "Number of years of service.",
            "format": "int32",
            "nullable": true
          },
          "totalAdditionalDaysHoliday": {
            "type": "number",
            "description": "Total additional days of holiday entitlement.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.YearsServiceEntitlementResponse": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Unique identifier for the Years Service Entitlement.",
            "format": "uuid"
          },
          "yearsService": {
            "type": "integer",
            "description": "Number of years of service.",
            "format": "int32",
            "nullable": true
          },
          "totalAdditionalDaysHoliday": {
            "type": "number",
            "description": "Total additional days of holiday entitlement.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Contract.YearsServiceEntitlementUpdateRequest": {
        "type": "object",
        "properties": {
          "uniqueId": {
            "type": "string",
            "description": "Unique identifier for the request.",
            "format": "uuid"
          },
          "yearsService": {
            "type": "integer",
            "description": "Number of years of service.",
            "format": "int32",
            "nullable": true
          },
          "totalAdditionalDaysHoliday": {
            "type": "number",
            "description": "Total additional days of holiday entitlement.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CostAnalysisReport": {
        "type": "object",
        "properties": {
          "singlePayrun": {
            "$ref": "#/components/schemas/PayRun"
          },
          "totalPay": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "pension": {
            "type": "number",
            "format": "double"
          },
          "aeoFees": {
            "type": "number",
            "format": "double"
          },
          "totalCost": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "employerNic": {
            "type": "number",
            "format": "double"
          },
          "netPayrollCost": {
            "type": "number",
            "format": "double"
          },
          "maleCount": {
            "type": "integer",
            "format": "int32"
          },
          "femaleCount": {
            "type": "integer",
            "format": "int32"
          },
          "leaverCount": {
            "type": "integer",
            "format": "int32"
          },
          "joinerCount": {
            "type": "integer",
            "format": "int32"
          },
          "paymentAfterLeavingCount": {
            "type": "integer",
            "format": "int32"
          },
          "recoverableAmounts": {
            "$ref": "#/components/schemas/RecoverableAmounts"
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "CostAnalysisReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/CostAnalysisReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "CostCentre": {
        "required": [
          "code",
          "title"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The unique code for this Cost Centre"
          },
          "title": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The name of this Cost Centre"
          },
          "color": {
            "maxLength": 6,
            "type": "string",
            "description": "A color to used to represent this Cost Centre, in hex format. ie 'ff0000'",
            "nullable": true
          },
          "accountingCode": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "description": "[readonly] The number of employees with this set as their primary cost centre",
            "format": "int32"
          },
          "hasJournalOverrides": {
            "type": "boolean",
            "description": "Has Journal Overrides"
          }
        },
        "additionalProperties": false
      },
      "CostOfEmploymentReport": {
        "type": "object",
        "properties": {
          "hasDepartments": {
            "type": "boolean"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CostOfEmploymentReportLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "CostOfEmploymentReportLine": {
        "type": "object",
        "properties": {
          "pay": {
            "type": "number",
            "format": "double"
          },
          "employerNic": {
            "type": "number",
            "format": "double"
          },
          "pension": {
            "type": "number",
            "format": "double"
          },
          "aeoFees": {
            "type": "number",
            "format": "double"
          },
          "statPayReclaim": {
            "type": "number",
            "format": "double"
          },
          "totalCost": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CostOfEmploymentReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/CostOfEmploymentReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "Country": {
        "enum": [
          "England",
          "NorthernIreland",
          "Scotland",
          "Wales",
          "OutsideUk",
          "Uk"
        ],
        "type": "string"
      },
      "CountryCode": {
        "enum": [
          "Andorra",
          "Albania",
          "Austria",
          "Azerbaijan",
          "Bahrain",
          "Belarus",
          "Belgium",
          "BosniaAndHerzegovina",
          "Brazil",
          "Bulgaria",
          "Burundi",
          "CostaRica",
          "Croatia",
          "Cyprus",
          "CzechRepublic",
          "Denmark",
          "Djibouti",
          "DominicanRepublic",
          "ElSalvador",
          "Estonia",
          "Egypt",
          "FalklandIslands",
          "FaroeIslands",
          "Finland",
          "France",
          "Georgia",
          "Germany",
          "Gibraltar",
          "Greece",
          "Greenland",
          "Guatemala",
          "Honduras",
          "Hungary",
          "Iceland",
          "Ireland",
          "Israel",
          "Iraq",
          "Italy",
          "Jordan",
          "Kazakhstan",
          "Kosovo",
          "Kuwait",
          "Lebanon",
          "Latvia",
          "Liechtenstein",
          "Lithuania",
          "Luxembourg",
          "Macedonia",
          "Malta",
          "Mauritania",
          "Mauritius",
          "Monaco",
          "Moldova",
          "Montenegro",
          "Mongolia",
          "Nicaragua",
          "Netherlands",
          "Norway",
          "Oman",
          "Pakistan",
          "Palestine",
          "Poland",
          "Portugal",
          "Qatar",
          "RepublicOfBelarus",
          "Romania",
          "Russia",
          "SaintLucia",
          "SanMarino",
          "SaudiArabia",
          "Serbia",
          "Seychelles",
          "Slovakia",
          "Slovenia",
          "Somalia",
          "SaoTomeAndPrincipe",
          "Spain",
          "Sudan",
          "Sweden",
          "Switzerland",
          "TimorLeste",
          "Tunisia",
          "Turkey",
          "Ukraine",
          "UnitedArabEmirates",
          "UnitedKingdom",
          "VaticanCity",
          "VirginIslands",
          "Yemen"
        ],
        "type": "string"
      },
      "CsvFileFormat": {
        "enum": [
          "MoneysoftEmployees",
          "BrightPayEmployees",
          "Fps",
          "SageEmployeeDetails",
          "AccessPeoplePlanner",
          "EmployeeCsv"
        ],
        "type": "string"
      },
      "CyclicReenrolmentReport": {
        "type": "object",
        "properties": {
          "reenrolmentDate": {
            "type": "string",
            "format": "date"
          },
          "employerName": {
            "type": "string",
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CyclicReenrolmentReportGroup"
            },
            "nullable": true
          },
          "totalStaff": {
            "type": "integer",
            "format": "int32"
          },
          "alreadyInPension": {
            "type": "integer",
            "format": "int32"
          },
          "totalReenrolled": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "CyclicReenrolmentReportGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CyclicReenrolmentReportLine"
            },
            "nullable": true
          },
          "totalStaff": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CyclicReenrolmentReportLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "middleName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "reenrolmentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "pensionSchemeId": {
            "type": "integer",
            "format": "int32"
          },
          "pensionSchemeName": {
            "type": "string",
            "nullable": true
          },
          "workerGroupName": {
            "type": "string",
            "nullable": true
          },
          "payScheduleName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CyclicReenrolmentReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/CyclicReenrolmentReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "DayOfWeek": {
        "enum": [
          "Sunday",
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "Saturday"
        ],
        "type": "string"
      },
      "DaysBeforePayday": {
        "enum": [
          "ZeroDayBeforePayday",
          "OneDayBeforePayday",
          "TwoDaysBeforePayday",
          "ThreeDaysBeforePayday",
          "FourDaysBeforePayday",
          "FiveDaysBeforePayday"
        ],
        "type": "string"
      },
      "DecimalDecimalBooleanPensionRuleValueTuple": {
        "type": "object",
        "properties": {
          "item1": {
            "type": "number",
            "format": "double"
          },
          "item2": {
            "type": "number",
            "format": "double"
          },
          "item3": {
            "type": "boolean"
          },
          "item4": {
            "$ref": "#/components/schemas/PensionRule"
          }
        },
        "additionalProperties": false
      },
      "DecimalTaxYearConfigPrimitiveValue": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "format": "double"
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date when these period values are effective",
            "format": "date",
            "nullable": true
          },
          "midYearChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DecimalTaxYearConfigPrimitiveValue"
            },
            "description": "Any optional changes to the period values that are effective from a specified date in the middle of a tax year",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeferalPeriodType": {
        "enum": [
          "Days",
          "Weeks",
          "Months",
          "PayPeriods"
        ],
        "type": "string"
      },
      "Department": {
        "required": [
          "code",
          "title"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The unique code for this Department"
          },
          "title": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The name of this Department"
          },
          "color": {
            "maxLength": 6,
            "type": "string",
            "description": "A color to used to represent this Department, in hex format. ie 'ff0000'",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "description": "[readonly] The number of employees with this set as their primary department",
            "format": "int32"
          },
          "accountingCode": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "hasJournalOverrides": {
            "type": "boolean",
            "description": "Has Overrides"
          }
        },
        "additionalProperties": false
      },
      "DepartmentMembership": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "The Code for the Department"
          },
          "color": {
            "type": "string",
            "description": "[readonly] The Color for the Department",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "[readonly] The Title for the Department",
            "nullable": true
          },
          "primary": {
            "type": "boolean",
            "description": "Set to true if this is the primary Department for the Employee.\r\nOnly one department can be set as the primary."
          },
          "weighting": {
            "type": "number",
            "description": "If there is more than one Department Membership for the Employee then this determines the weighting to give to this membership.\r\nie, if he is in two departments you might set the primary as 0.8 and the secondary as 0.2;",
            "format": "double"
          },
          "employeeRoleUniqueId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Used to represent an Employees membership of a Department"
      },
      "DirectDebitMandate": {
        "type": "object",
        "properties": {
          "isCompleted": {
            "type": "boolean"
          },
          "mandateLink": {
            "type": "string",
            "nullable": true
          },
          "customerLink": {
            "type": "string",
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "nullable": true
          },
          "accountNumberEnding": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DirectorshipDetails": {
        "type": "object",
        "properties": {
          "isDirector": {
            "type": "boolean"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "niAlternativeMethod": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DpsDataType": {
        "enum": [
          "P6",
          "P9",
          "SL1",
          "SL2",
          "PGL1",
          "PGL2",
          "AR",
          "NOT",
          "RTI",
          "CIS"
        ],
        "type": "string"
      },
      "DpsNotice": {
        "type": "object",
        "properties": {
          "issueDate": {
            "type": "string",
            "format": "date"
          },
          "effectiveDate": {
            "type": "string",
            "format": "date"
          },
          "taxYear": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "sequenceNumber": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/DpsDataType"
          },
          "formType": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "niNo": {
            "type": "string",
            "nullable": true
          },
          "worksNumber": {
            "type": "string",
            "nullable": true
          },
          "taxCode": {
            "type": "string",
            "nullable": true
          },
          "week1Month1": {
            "type": "boolean",
            "nullable": true
          },
          "previousTax": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "previousPay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "planType": {
            "$ref": "#/components/schemas/StudentLoan"
          },
          "appliedOn": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "periodApplied": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DpsSettings": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "If enabled, we'll automatically retrieve DPS notices from HMRC for you"
          },
          "retrieveFrom": {
            "type": "string",
            "description": "The date from which notices should be retrieved",
            "format": "date"
          },
          "autoApply": {
            "type": "boolean",
            "description": "If enabled, we'll automatically apply DPSNotices before starting a payrun that covers the EffectiveDate"
          },
          "lastChecked": {
            "type": "string",
            "description": "[readonly] The time we last checked for notices",
            "format": "date",
            "nullable": true
          },
          "error": {
            "type": "string",
            "description": "[readonly] If we received an error from HMRC when checking for notices, it'll be displayed here",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This model is used to set an employers settings for HMRCs Data Provisioning Service"
      },
      "EmailAttachment": {
        "required": [
          "filename",
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "minLength": 1,
            "type": "string"
          },
          "filename": {
            "minLength": 1,
            "type": "string"
          },
          "pdfPasswordType": {
            "$ref": "#/components/schemas/PdfPasswordType"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EmpRefs": {
        "type": "object",
        "properties": {
          "officeNo": {
            "type": "string",
            "nullable": true
          },
          "payeRef": {
            "type": "string",
            "nullable": true
          },
          "aoRef": {
            "type": "string",
            "nullable": true
          },
          "econ": {
            "type": "string",
            "nullable": true
          },
          "cotaxRef": {
            "type": "string",
            "nullable": true
          },
          "sautr": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Employee": {
        "type": "object",
        "properties": {
          "holidaySchemeUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "leaveHolidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "defaultPensionSchemeUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeName": {
            "type": "string",
            "nullable": true
          },
          "defaultWorkerGroupUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupName": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          },
          "personalDetails": {
            "$ref": "#/components/schemas/PersonalDetails"
          },
          "employmentDetails": {
            "$ref": "#/components/schemas/EmploymentDetails"
          },
          "autoEnrolment": {
            "$ref": "#/components/schemas/AutoEnrolment"
          },
          "leaveSettings": {
            "$ref": "#/components/schemas/LeaveSettings"
          },
          "rightToWork": {
            "$ref": "#/components/schemas/RightToWork"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/BankDetails"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "payOptions": {
            "$ref": "#/components/schemas/PayOptions"
          },
          "status": {
            "$ref": "#/components/schemas/EmployeeStatus"
          },
          "aeNotEnroledWarning": {
            "type": "boolean",
            "description": "[readonly] If true then the employee should be enrolled in an Auto Enrolment Qualifying pension but isn't",
            "readOnly": true
          },
          "sourceSystemId": {
            "maxLength": 50,
            "type": "string",
            "description": "[readonly] Can only be given a value when the employee is created. It can then never be changed.\r\nUsed by external systems so they can store an immutable reference",
            "nullable": true
          },
          "evcId": {
            "type": "string",
            "description": "If set then this will be used as the EmployeeIDFromProduct sent to EVC in place of the standard EmployeeId.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployeeBenefitsReport": {
        "type": "object",
        "properties": {
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EmployeeBenefitsReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/EmployeeBenefitsReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "EmployeeCostCentre": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "The Code for the Cost Centre"
          },
          "color": {
            "type": "string",
            "description": "[readonly] The Color for the Cost Centre",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "[readonly] The Title for the Cost Centre",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Set to true if this is the primary Cost Centre for the Employee.\r\nOnly one Cost Centre can be set as the primary."
          },
          "weighting": {
            "type": "number",
            "description": "If there is more than one Cost Centre Membership for the Employee then this determines the weighting to give to this membership.\r\nie, if he is in two Cost Centre you might set the primary as 0.8 and the secondary as 0.2;",
            "format": "double"
          },
          "employeeRoleUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          }
        },
        "additionalProperties": false,
        "description": "Used to represent an Employees membership of a Cost Centre"
      },
      "EmployeeLeaveReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeLeaveReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EmployeeLeaveReportLine": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/LeaveType"
          },
          "payment": {
            "$ref": "#/components/schemas/LeavePayType"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "openEndedAbsence": {
            "type": "boolean"
          },
          "percentOfPay": {
            "type": "number",
            "format": "double"
          },
          "paySSPInAddition": {
            "type": "boolean"
          },
          "payFrequency": {
            "$ref": "#/components/schemas/StatPayFrequency"
          },
          "occupationalPolicy": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "useOpeningPay": {
            "type": "boolean"
          },
          "openingPay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "openingOmpPay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "babyDueDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "babyBirthDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "matchingDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "expectedPlacementDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "placementDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "deathDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "averageWeeklyEarnings": {
            "type": "number",
            "format": "double"
          },
          "automaticAWECalculation": {
            "type": "boolean"
          },
          "calculationType": {
            "$ref": "#/components/schemas/LeaveCalculationType"
          },
          "strikeHoursToDeduct": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "historicLeaveRequiresProcessing": {
            "type": "boolean"
          },
          "offsetPay": {
            "type": "boolean"
          },
          "useAssumedPensionablePay": {
            "type": "boolean"
          },
          "automaticAPPCalculation": {
            "type": "boolean"
          },
          "assumedPensionablePay": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployeeLeaveReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/EmployeeLeaveReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "EmployeeLoanExportReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeLoanExportReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EmployeeLoanExportReportLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "uniqueIdentifier": {
            "type": "string",
            "format": "uuid"
          },
          "issueDate": {
            "type": "string",
            "format": "date"
          },
          "reference": {
            "type": "string",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "nullable": true
          },
          "pausePayments": {
            "type": "boolean"
          },
          "loanAmount": {
            "type": "number",
            "format": "double"
          },
          "previouslyPaid": {
            "type": "number",
            "format": "double"
          },
          "periodAmount": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "EmployeeLoanExportReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/EmployeeLoanExportReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "EmployeeNiYtdValues": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "niTable": {
            "type": "string"
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NiYtdValue"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployeePayRunTotal": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "description": "Payroll code of the employee",
            "nullable": true
          },
          "grossForNi": {
            "type": "number",
            "description": "The amount of the Gross that is subject to NI",
            "format": "double"
          },
          "grossPensionPay": {
            "type": "number",
            "description": "The amount of the Gross that is subject to PensionPay",
            "format": "double"
          },
          "employerPensionContribution": {
            "type": "number",
            "description": "The value of the Pension Contribution being made by the Employer for this Employee",
            "format": "double"
          },
          "employerNi": {
            "type": "number",
            "description": "The Employer NI Contribution amount",
            "format": "double"
          },
          "grossTaxablePay": {
            "type": "number",
            "description": "The amount of the Gross that is subject to TaxablePay",
            "format": "double"
          },
          "employeeNi": {
            "type": "number",
            "description": "The Employee NI Contribution amount",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "description": "The Employee Tax amount",
            "format": "double"
          },
          "studentLoanRecovered": {
            "type": "number",
            "description": "The Employee Student Loan recovered amount",
            "format": "double"
          },
          "employeePension": {
            "type": "number",
            "description": "The value of the Pension Contribution(PENSION) being made by the Employee as a Net Pay Arrangement",
            "format": "double"
          },
          "employeePensionContributionReliefAtSource": {
            "type": "number",
            "description": "The value of employee pension contributions Relief At Source(PENSIONRAS) that are not paid under 'net pay arrangements'",
            "format": "double"
          },
          "employeePensionContributionSalarySacrifice": {
            "type": "number",
            "description": "The value of the Pension Contribution Salary Sacrifice(PENSIONSS) being made by the Employee as a Salary Sacrifice",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "EmployeePayRunTotal is used to calculte the employee pay run total"
      },
      "EmployeePaymentsReportLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "description": "Payroll Code for exported pay line",
            "nullable": true
          },
          "employeeName": {
            "type": "string",
            "description": "Employee Name for exported pay line",
            "nullable": true
          },
          "uniqueIdentifier": {
            "type": "string",
            "description": "Unique Id for exported pay line",
            "format": "uuid"
          },
          "amount": {
            "type": "number",
            "description": "Amount for exported pay line",
            "format": "double"
          },
          "percentage": {
            "type": "number",
            "description": "Amount for exported pay line",
            "format": "double",
            "nullable": true
          },
          "multiplierType": {
            "type": "integer",
            "description": "MultiplierType of exported pay line",
            "format": "int32"
          },
          "multiplier": {
            "type": "number",
            "description": "Multiplier for exported pay line",
            "format": "double",
            "nullable": true
          },
          "hours": {
            "type": "number",
            "description": "Number of Hours for exported pay line",
            "format": "double",
            "nullable": true
          },
          "days": {
            "type": "number",
            "description": "Number of Days for exported pay line",
            "format": "double",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "description": "Pay code for exported pay line",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Note for exported pay line",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "description": "Effective From date for exported pay line",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "description": "Effective To date for exported pay line",
            "format": "date",
            "nullable": true
          },
          "isNetToGross": {
            "type": "boolean",
            "description": "Indicates Gross To Net value for exported pay line"
          },
          "department": {
            "type": "string",
            "description": "Department for exported pay line",
            "nullable": true
          },
          "costCentre": {
            "type": "string",
            "description": "Cost Centre for exported pay line",
            "nullable": true
          },
          "isAutomaticBackPay": {
            "type": "boolean",
            "description": "Indicates Automatic Back Pay value for exported pay line"
          },
          "ignoreInitialBackPay": {
            "type": "boolean",
            "description": "Indicates Ignore Initial Back Pay value for exported pay line"
          },
          "contributesToBasicPay": {
            "type": "boolean",
            "description": "Indicates Contributes To Basic Pay value for exported pay line"
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "Indicates Auto Adjust For Leave value for exported pay line"
          },
          "roleReference": {
            "type": "string",
            "description": "Employee Role Reference for exported pay line",
            "nullable": true
          },
          "paySpine": {
            "type": "string",
            "description": "Pay Spine for exported pay line",
            "nullable": true
          },
          "payGrade": {
            "type": "string",
            "description": "Pay Grade for exported pay line",
            "nullable": true
          },
          "spinePoint": {
            "type": "string",
            "description": "Spine Point for exported pay line",
            "nullable": true
          },
          "londonAllowanceType": {
            "type": "string",
            "description": "London Allowance type for exported pay line",
            "nullable": true
          },
          "calculateAsWhenPaid": {
            "type": "boolean",
            "description": "Indicates whether this pay line should be treated as When Paid rather than When Earned"
          },
          "departmentId": {
            "type": "string",
            "description": "Department ID associated with the exported payline",
            "format": "uuid"
          },
          "costCentreId": {
            "type": "string",
            "description": "Cost Centre ID associated with the exported payline",
            "format": "uuid"
          },
          "paySpineId": {
            "type": "string",
            "description": "Pay Spine ID associated with the exported payline",
            "format": "uuid"
          },
          "spinalPointId": {
            "type": "string",
            "description": "Spinal Point ID associated with the exported payline",
            "format": "uuid"
          },
          "paySpineGradeId": {
            "type": "string",
            "description": "Pay Spine Grade ID associated with the exported payline",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "EmployeePaymentsReportLineListReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeePaymentsReportLine"
            },
            "description": "[readonly] If the type is application.json then this will contain a JSON representation of the relevant model",
            "nullable": true
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "EmployeeRole": {
        "type": "object",
        "properties": {
          "jobTitle": {
            "type": "string",
            "description": "Job Title of the Role",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Set to True if this is Primary role of the Employee"
          },
          "reference": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "basis": {
            "$ref": "#/components/schemas/RoleBasis"
          },
          "type": {
            "$ref": "#/components/schemas/RoleType"
          },
          "payOptions": {
            "$ref": "#/components/schemas/EmployeeRolePayOptions"
          },
          "workingPatternId": {
            "type": "string",
            "description": "Used when calculating payments for Leave.\r\nIf null then the default Working Pattern is used",
            "format": "uuid",
            "nullable": true,
            "deprecated": true
          },
          "occupationalMaternityPolicyUniqueId": {
            "type": "string",
            "description": "Used for assigning occupational maternity policy",
            "format": "uuid",
            "nullable": true
          },
          "occupationalSicknessPolicyUniqueId": {
            "type": "string",
            "description": "Used for assigning occupational sickness policy",
            "format": "uuid",
            "nullable": true
          },
          "defaultPensionSchemeUniqueId": {
            "type": "string",
            "description": "Used when employee role has attached default pension scheme Id",
            "format": "uuid",
            "nullable": true
          },
          "defaultWorkerGroupUniqueId": {
            "type": "string",
            "description": "Used when employee role has attached default worker group Id",
            "format": "uuid",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EmployeeRoleAnalysisCategoryCode": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "The Code for the AnalysisCategoryCode"
          },
          "color": {
            "type": "string",
            "description": "[readonly] The Color for the AnalysisCategoryCode",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "[readonly] The Title for the AnalysisCategoryCode",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Set to true if this is the primary AnalysisCategoryCode for the Employee.\r\nOnly one AnalysisCategoryCode can be set as the primary."
          },
          "weighting": {
            "type": "number",
            "description": "If there is more than one AnalysisCategoryCode Membership for the Employee then this determines the weighting to give to this membership.\r\nie, if he is in two AnalysisCategoryCode you might set the primary as 0.8 and the secondary as 0.2;",
            "format": "double"
          },
          "analysisCategoryName": {
            "type": "string",
            "description": "Analysis Category Name",
            "nullable": true
          },
          "analysisCategoryPublicId": {
            "type": "string",
            "description": "Analysis Category Public Id",
            "format": "uuid"
          },
          "employeeRolePublicId": {
            "type": "string",
            "description": "Employee Role Public Id",
            "format": "uuid"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          }
        },
        "additionalProperties": false
      },
      "EmployeeRolePayItem": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "format": "uuid"
          },
          "isPrimary": {
            "type": "boolean"
          },
          "baseDailyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of \r\nthe employees base daily rate. Eg sick.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "baseHourlyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of \r\nthe employees base hourly rate. Eg Overtime.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "weight": {
            "type": "number",
            "description": "This property is used to calculate values for the relative weight of the usual pay for \r\neach role compared to the sum of all roles' usual pay\r\nUsual pay for the purpose of the current value's calculation is based on the employee's permanent pay items\r\nincluding employee basic pay and permanent addition and deduction pay lines subject to NI or Tax",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "EmployeeRolePayOptions": {
        "type": "object",
        "properties": {
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "nationalMinimumWage": {
            "type": "boolean"
          },
          "payCode": {
            "type": "string",
            "description": "If you want the Employees pay to be allocated to a code other than BASIC, specify it here",
            "nullable": true
          },
          "mileageVehicleType": {
            "$ref": "#/components/schemas/MileageVehicleType"
          },
          "mapsMiles": {
            "type": "integer",
            "description": "The number of miles to pay for as Mileage Allowance Payments",
            "format": "int32",
            "nullable": true
          },
          "payAmount": {
            "type": "number",
            "description": "The amount the Employee is regularly paid each period",
            "format": "double"
          },
          "payAmountMultiplier": {
            "type": "number",
            "description": "This property is irrelevant if the basis is Monthly.\r\nBut if the basis is Daily or Hourly then this property sets how many days/hours the employee should be paid for in the period.",
            "format": "double"
          },
          "baseHourlyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of \r\nthe employees base hourly rate. Eg Overtime.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "baseDailyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of \r\nthe employees base daily rate. Eg sick.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "basicPay": {
            "type": "number",
            "description": "The amount of basic pay the Employee is regularly paid each period\r\nThis amount is the combined total of all pay elements that contribute to basic pay",
            "format": "double"
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "niTable": {
            "type": "string"
          },
          "regularPayLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayLine"
            },
            "description": "These are used to make additions/deductions to the pay for this Employee.\r\nYou do not need to include Pension, Tax, NI,  Loan Repayments, etc as these will all be automatically created.",
            "nullable": true
          },
          "excludedRegularPayLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayLine"
            },
            "description": "These used to store the PayLines that have been excluded from RegularPaylines.",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EmployeeSortBy": {
        "enum": [
          "PayrollCode",
          "Employee",
          "Department",
          "PaySchedule"
        ],
        "type": "string"
      },
      "EmployeeStatus": {
        "enum": [
          "Current",
          "Former",
          "Upcoming"
        ],
        "type": "string"
      },
      "EmployeeYtdValues": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/YtdValue"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployerBetaFeatures": {
        "enum": [
          "MultiRoleAe",
          "AdditionalPayPeriods"
        ],
        "type": "string"
      },
      "EmployerDefaults": {
        "type": "object",
        "properties": {
          "employer": {
            "$ref": "#/components/schemas/EmployerItem"
          },
          "payCodes": {
            "type": "boolean",
            "description": "If true then PayCodes and PayCodeSets will be copied from the specified Employer"
          },
          "csvMappings": {
            "type": "boolean",
            "description": "If true then CSV Mappings will be copied from the specified Employer"
          },
          "departments": {
            "type": "boolean",
            "description": "If true then Departments, Cost Centres and Analysis Categories will be copied from the specified Employer"
          },
          "rti": {
            "type": "boolean",
            "description": "If true then RTI Settings will be copied from the specified Employer"
          },
          "users": {
            "type": "boolean",
            "description": "If true then Users will be copied from the specified Employer"
          },
          "hmrcNoticeSettings": {
            "type": "boolean",
            "description": "If true then HMRC Notice Settings will be copied from the specified Employer"
          },
          "payOptions": {
            "type": "boolean",
            "description": "If true then Default Pay Options will be copied from the specified Employer."
          },
          "workingPatterns": {
            "type": "boolean",
            "description": "If true then WorkingPatterns will be copied from the specified Employer"
          },
          "occupationalPolicies": {
            "type": "boolean",
            "description": "If true then Occupational Absence Schemes will be copied from the specified Employer."
          },
          "pensionSchemes": {
            "type": "boolean",
            "description": "If true then PensionSchemes will be copied from the specified Employer"
          },
          "payees": {
            "type": "boolean",
            "description": "If true then Payees will be copied from the specified Employer"
          },
          "reportPacks": {
            "type": "boolean",
            "description": "If true then ReportPacks will be copied from the specified Employer"
          }
        },
        "additionalProperties": false,
        "description": "When a user creates a new Employer, certain settings can be copied from an existing employer.\r\nThis model determines which employer (if any) settings should be copied from and what should be copied."
      },
      "EmployerEmail": {
        "required": [
          "subject",
          "toEmail",
          "toName"
        ],
        "type": "object",
        "properties": {
          "toName": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "toEmail": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "subject": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "buttonText": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "buttonLink": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "bodyPreview": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "afterBtnBody": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "statusDate": {
            "type": "string",
            "format": "date-time"
          },
          "statusMessage": {
            "type": "string",
            "nullable": true
          },
          "sendAttempts": {
            "type": "integer",
            "format": "int32"
          },
          "webAppBaseUrl": {
            "type": "string",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailAttachment"
            },
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EmployerEvcOptInHistory": {
        "type": "object",
        "properties": {
          "optIn": {
            "type": "boolean"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "userEmail": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployerGroup": {
        "required": [
          "code",
          "name"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The unique code for this EmployerGroup"
          },
          "employerCount": {
            "type": "integer",
            "format": "int32"
          },
          "color": {
            "maxLength": 6,
            "type": "string",
            "description": "A color to used to represent this EmployerGroup, in hex format. ie 'ff0000'",
            "nullable": true
          },
          "name": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EmployerGroupMembership": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "The Code for the EmployerGroup"
          },
          "color": {
            "type": "string",
            "description": "[readonly] The Color for the EmployerGroup",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "[readonly] The Title for the EmployerGroup",
            "nullable": true
          },
          "primary": {
            "type": "boolean",
            "description": "Set to true if this is the primary EmployerGroup for the Employer.\r\nOnly one EmployerGroup can be set as the primary."
          }
        },
        "additionalProperties": false,
        "description": "Used to represent an Employers membership of a EmployerGroup"
      },
      "EmployerItem": {
        "type": "object",
        "properties": {
          "isOwner": {
            "type": "boolean"
          },
          "role": {
            "$ref": "#/components/schemas/UserRole"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployerListType": {
        "enum": [
          "Owned",
          "FromOthers",
          "Support",
          "Archived"
        ],
        "type": "string"
      },
      "EmployerOpeningBalances": {
        "type": "object",
        "properties": {
          "smpRecovered": {
            "type": "number",
            "description": "Value of Statutory Maternity Pay recovered year to date",
            "format": "double"
          },
          "sppRecovered": {
            "type": "number",
            "description": "Value of Statutory Paternity Pay recovered year to date",
            "format": "double"
          },
          "sapRecovered": {
            "type": "number",
            "description": "Value of Statutory Adoption Pay recovered year to date",
            "format": "double"
          },
          "shPPRecovered": {
            "type": "number",
            "description": "Value of Shared Parental Pay recovered year to date",
            "format": "double"
          },
          "spbpRecovered": {
            "type": "number",
            "description": "Value of Statutory Parental Bereavment Pay recovered year to date",
            "format": "double"
          },
          "spbpNorthernIrelandRecovered": {
            "type": "number",
            "description": "Value of Statutory Parental Bereavment(Northern Ireland) Pay recovered year to date",
            "format": "double"
          },
          "sncpRecovered": {
            "type": "number",
            "description": "Value of Statutory Neonatal Care Pay recovered year to date",
            "format": "double"
          },
          "nicCompensationOnSMP": {
            "type": "number",
            "description": "Value of NIC compensation on SMP year to date",
            "format": "double"
          },
          "nicCompensationOnSPP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Paternity Pay year to date",
            "format": "double"
          },
          "nicCompensationOnSAP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Adoption Pay year to date",
            "format": "double"
          },
          "nicCompensationOnShPP": {
            "type": "number",
            "description": "Value of NIC compensation on Shared Parental Pay year to date",
            "format": "double"
          },
          "nicCompensationOnSPBP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Parental Bereavement Pay year to date",
            "format": "double"
          },
          "nicCompensationOnSPBPNorthernIreland": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Parental Bereavement(Northern Ireland) Pay year to date",
            "format": "double"
          },
          "nicCompensationOnSNCP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Neonatal Care Pay year to date",
            "format": "double"
          },
          "cisDeductionsSuffered": {
            "type": "number",
            "description": "Value of CIS deductions suffered year to date",
            "format": "double"
          },
          "apprenticeshipLevy": {
            "type": "number",
            "description": "Value of Apprenticeship levy paid year to date",
            "format": "double"
          },
          "employmentAllowance": {
            "type": "number",
            "description": "Value of Employment Allowance claimed year to date",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "EmployerPensionContribution": {
        "type": "object",
        "properties": {
          "pensionName": {
            "type": "string",
            "nullable": true
          },
          "contributionAmount": {
            "type": "number",
            "format": "double"
          },
          "contributionPercentage": {
            "type": "number",
            "format": "double"
          },
          "isPercentage": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EmployerSortBy": {
        "enum": [
          "ProcessorName",
          "Name",
          "Crn",
          "AlternativeId",
          "EmployeeCount",
          "RTICount",
          "PensionStatus",
          "AutoPilot"
        ],
        "type": "string"
      },
      "EmployerTemplate": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EmployerTemplateType"
          },
          "description": {
            "type": "string",
            "description": "Explains the purpose of this template",
            "nullable": true
          },
          "isCustom": {
            "type": "boolean",
            "description": "Indicates whether or not this template has been changed from the default content.",
            "readOnly": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "defaultContent": {
            "type": "string",
            "description": "[readonly] The default content for this template",
            "nullable": true
          },
          "defaultSubject": {
            "type": "string",
            "description": "[readonly] The default subject for this template",
            "nullable": true
          },
          "hasSubject": {
            "type": "boolean",
            "description": "[readonly] If false then the Subject property is not relevant for this template type"
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[readonly] A list of tokens that can be used with this template.\r\nFor example, if 'Employee.FirstName' is in the list then use '{Employee.FirstName}' in the Content or Subject and\r\nit'll be replaced with the relevant value when the template is parsed.",
            "nullable": true
          },
          "tokensExpanded": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EmployerTemplateType": {
        "enum": [
          "PayslipEmail",
          "AutoEnrolment_Enrolled",
          "AutoEnrolment_Enrolled_NetPay",
          "AutoEnrolment_NotEnrolled",
          "AutoEnrolment_Insert",
          "CisStatementEmail",
          "PayrunSummary",
          "PayslipsUnemailed",
          "PayrunAutoEmail",
          "P60Email",
          "AnnualCisStatementEmail",
          "P45Email",
          "AutoEnrolment_Postponed",
          "AutoEnrolment_ReEnrolled",
          "AutoEnrolment_Enrolled_SalarySacrifice",
          "AutoEnrolment_ReEnrolled_SalarySacrifice",
          "P11DEmail"
        ],
        "type": "string"
      },
      "EmploymentDetails": {
        "required": [
          "payrollCode"
        ],
        "type": "object",
        "properties": {
          "cisSubContractor": {
            "type": "boolean",
            "description": "Set to True if this Employee is a CIS Subcontractor. The ```Cis``` property contains further information"
          },
          "payrollCode": {
            "maxLength": 35,
            "minLength": 1,
            "type": "string",
            "description": "The Employees Payroll Code. Must be unique within the Employer."
          },
          "jobTitle": {
            "maxLength": 120,
            "type": "string",
            "description": "Job Title of Primary role of the Employee",
            "nullable": true
          },
          "workplacePostcode": {
            "maxLength": 10,
            "type": "string",
            "description": "Set the workplace postcode, ensuring it's uppercase and no longer than 10 characters.",
            "nullable": true
          },
          "onHold": {
            "type": "boolean",
            "description": "Set to true to temporarily exclude the employee from payruns"
          },
          "onFurlough": {
            "type": "boolean",
            "description": "Set to true if the employee is on furlough."
          },
          "furloughStart": {
            "type": "string",
            "description": "Furlough Start Date.",
            "format": "date",
            "nullable": true
          },
          "furloughEnd": {
            "type": "string",
            "description": "Furlough End Date.",
            "format": "date",
            "nullable": true
          },
          "furloughCalculationBasis": {
            "$ref": "#/components/schemas/FurloughCalculationBasis"
          },
          "furloughCalculationBasisAmount": {
            "type": "number",
            "format": "double"
          },
          "partialFurlough": {
            "type": "boolean",
            "description": "Set to true if the employee is partially furloughed."
          },
          "furloughHoursNormallyWorked": {
            "type": "number",
            "format": "double"
          },
          "furloughHoursOnFurlough": {
            "type": "number",
            "format": "double"
          },
          "isApprentice": {
            "type": "boolean",
            "description": "Set to True if this Employee is an apprentice. This affects the calculations for National Minimum Wage"
          },
          "apprenticeshipStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "apprenticeshipEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "workingPattern": {
            "type": "string",
            "description": "Used when calculating payments for Leave.\r\nIf null then the default Working Pattern is used",
            "format": "uuid",
            "nullable": true
          },
          "forcePreviousPayrollCode": {
            "maxLength": 35,
            "type": "string",
            "description": "If this property has a non-empty value then a change of Payroll code will be declared on the next FPS.",
            "nullable": true
          },
          "starterDetails": {
            "$ref": "#/components/schemas/StarterDetails"
          },
          "directorshipDetails": {
            "$ref": "#/components/schemas/DirectorshipDetails"
          },
          "leaverDetails": {
            "$ref": "#/components/schemas/LeaverDetails"
          },
          "cis": {
            "$ref": "#/components/schemas/CisDetails"
          },
          "department": {
            "$ref": "#/components/schemas/Department"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "List of Roles held by Employee",
            "nullable": true
          },
          "isWorkingInFreePort": {
            "type": "boolean",
            "description": "Flag indicating the employee is employed in a Freeport"
          },
          "veteranDetails": {
            "$ref": "#/components/schemas/VeteranDetails"
          },
          "continuousEmploymentDate": {
            "type": "string",
            "description": "[readonly] Continuous employment date for the occupational scheme.",
            "format": "date",
            "nullable": true
          },
          "includeSecondedInfoOnStarter": {
            "type": "boolean",
            "description": "[readonly] If true then include seconded information on starter of FPS"
          },
          "isWorkingInInvestmentZone": {
            "type": "boolean",
            "description": "Flag indicating the employee is employed in an Investment Zone"
          }
        },
        "additionalProperties": false
      },
      "EntitlementBand": {
        "type": "object",
        "properties": {
          "percentOfPay": {
            "type": "number",
            "format": "double"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "paySspInAddition": {
            "type": "boolean"
          },
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EntityType": {
        "enum": [
          "None",
          "Employer",
          "Employee",
          "PayRunEntry",
          "PensionScheme",
          "PayCode",
          "Note",
          "Leave",
          "Benefits",
          "Pension",
          "AttachmentOrder",
          "OpeningBalances",
          "NicSummary",
          "HmrcPayment",
          "DpsNotice",
          "User",
          "Settings",
          "PayRun",
          "Loan",
          "Department",
          "EmployerOpeningBalances",
          "EmployerGroupMembership",
          "DepartmentMembership",
          "TermCalendar",
          "TermCalendarYear"
        ],
        "type": "string"
      },
      "Eps": {
        "type": "object",
        "properties": {
          "periodOfInactivity": {
            "$ref": "#/components/schemas/FromToDates"
          },
          "noPaymentForPeriod": {
            "$ref": "#/components/schemas/FromToDates"
          },
          "finalSubmission": {
            "$ref": "#/components/schemas/EpsFinalSubmission"
          },
          "recoverableAmounts": {
            "$ref": "#/components/schemas/RecoverableAmounts"
          },
          "apprenticeshipLevy": {
            "$ref": "#/components/schemas/EpsApprenticeshipLevy"
          },
          "account": {
            "$ref": "#/components/schemas/EpsAccount"
          },
          "eligibleForEmploymentAllowance": {
            "type": "boolean",
            "nullable": true
          },
          "deMinimisStateAid": {
            "$ref": "#/components/schemas/EpsDeMinimisStateAid"
          },
          "iRmark": {
            "type": "string",
            "nullable": true
          },
          "xml": {
            "type": "string",
            "description": "This property will soon be removed and should not be used.\r\nThere is now a dedicated API endpoint for retrieving the XML for a submission.",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "employerReferences": {
            "$ref": "#/components/schemas/EmpRefs"
          },
          "govTalkSubmission": {
            "$ref": "#/components/schemas/GovTalkSubmission"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EpsAccount": {
        "type": "object",
        "properties": {
          "accountHoldersName": {
            "type": "string",
            "nullable": true
          },
          "accountNo": {
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "nullable": true
          },
          "buildingSocRef": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used on an EPS to send bank account information"
      },
      "EpsApprenticeshipLevy": {
        "type": "object",
        "properties": {
          "taxMonth": {
            "type": "integer",
            "format": "int32"
          },
          "levyDueYTD": {
            "type": "number",
            "format": "double"
          },
          "annualAllce": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Used on an EPS to declare an Apprenticeship Levy amount"
      },
      "EpsDeMinimisStateAid": {
        "type": "object",
        "properties": {
          "agri": {
            "type": "boolean"
          },
          "fisheriesAqua": {
            "type": "boolean"
          },
          "roadTrans": {
            "type": "boolean"
          },
          "indust": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Used on an EPS to declare an Employment Allowance DeMinimis State Aid information"
      },
      "EpsFinalSubmission": {
        "type": "object",
        "properties": {
          "isFinalSubmission": {
            "type": "boolean"
          },
          "becauseSchemeCeased": {
            "type": "boolean"
          },
          "dateCeased": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used on an EPS to declare a Final Submission"
      },
      "Establishment": {
        "type": "object",
        "properties": {
          "localAuthorityNumber": {
            "type": "string",
            "nullable": true
          },
          "schoolEmployerType": {
            "type": "string",
            "nullable": true
          },
          "establishmentCode": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "EvcSettings": {
        "type": "object",
        "properties": {
          "rightToRestrict": {
            "type": "boolean",
            "description": "If set to True then this employee shouldn't be included in data sent to EVC"
          },
          "rightToDelete": {
            "type": "boolean",
            "description": "If set to True then the EVC service will be informed that the employee has invoked their GDPR Right To Delete"
          },
          "subjectAccessRequest": {
            "type": "boolean",
            "description": "If set to True then the EVC service will be informed that the employee has made a Subject Access Request"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          }
        },
        "additionalProperties": false,
        "description": "Employee Settings related to the Employee Verification Programme"
      },
      "Exb": {
        "type": "object",
        "properties": {
          "additionsAmount": {
            "type": "number",
            "format": "double"
          },
          "additionsDescription": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "deductionsAmount": {
            "type": "number",
            "format": "double"
          },
          "deductionsDescription": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "description": "[readonly] The number of employees with a P11D",
            "format": "int32"
          },
          "totalBenefits": {
            "type": "number",
            "description": "[readonly] Total value of benefits, not including any deductions or additions",
            "format": "double"
          },
          "totalAdjustedBenefits": {
            "type": "number",
            "description": "[readonly] Total value of benefits",
            "format": "double",
            "readOnly": true
          },
          "nicsRate": {
            "type": "number",
            "description": "[readonly] The Class 1A NICS Rate",
            "format": "double"
          },
          "nicsPayable": {
            "type": "number",
            "description": "[readonly] NICs Payable",
            "format": "double",
            "readOnly": true
          },
          "expensesAndBenefits": {
            "$ref": "#/components/schemas/ExpensesAndBenefits"
          },
          "iRmark": {
            "type": "string",
            "nullable": true
          },
          "xml": {
            "type": "string",
            "description": "This property will soon be removed and should not be used.\r\nThere is now a dedicated API endpoint for retrieving the XML for a submission.",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "employerReferences": {
            "$ref": "#/components/schemas/EmpRefs"
          },
          "govTalkSubmission": {
            "$ref": "#/components/schemas/GovTalkSubmission"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ExbDeclarations": {
        "type": "object",
        "properties": {
          "p11Dincluded": {
            "type": "string",
            "nullable": true
          },
          "p46CarDeclaration": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExbEmployer": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExbP11d": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/ExbP11dEmployee"
          },
          "transferred": {
            "$ref": "#/components/schemas/P11DAssetTransferredCollection"
          },
          "payments": {
            "$ref": "#/components/schemas/P11DPaymentCollection"
          },
          "vouchersOrCCs": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "livingAccom": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "mileageAllow": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "cars": {
            "$ref": "#/components/schemas/P11DCarCollection"
          },
          "vans": {
            "$ref": "#/components/schemas/P11dVans"
          },
          "loans": {
            "$ref": "#/components/schemas/P11DLoanCollection"
          },
          "medical": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "relocation": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "services": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "assetsAvail": {
            "$ref": "#/components/schemas/P11DAssetAvailableCollection"
          },
          "other": {
            "$ref": "#/components/schemas/P11DOther"
          },
          "expPaid": {
            "$ref": "#/components/schemas/P11dExpenses"
          }
        },
        "additionalProperties": false
      },
      "ExbP11dEmployee": {
        "type": "object",
        "properties": {
          "employeeUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "dirInd": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "$ref": "#/components/schemas/RtiEmployeeName"
          },
          "wksNo": {
            "type": "string",
            "nullable": true
          },
          "nino": {
            "type": "string",
            "nullable": true
          },
          "birthDate": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExbP11db": {
        "type": "object",
        "properties": {
          "class1AcontributionsDue": {
            "$ref": "#/components/schemas/ExbP11dbClass1A"
          }
        },
        "additionalProperties": false
      },
      "ExbP11dbClass1A": {
        "type": "object",
        "properties": {
          "niCsRate": {
            "type": "string",
            "nullable": true
          },
          "totalBenefit": {
            "$ref": "#/components/schemas/ExbP11dbClass1ATotalBenefit"
          },
          "adjustments": {
            "$ref": "#/components/schemas/ExbP11dbClass1AAdjustments"
          },
          "niCpayable": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExbP11dbClass1AAdjustment": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "adjustment": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExbP11dbClass1AAdjustments": {
        "type": "object",
        "properties": {
          "totalBenefit": {
            "type": "string",
            "nullable": true
          },
          "amountDue": {
            "$ref": "#/components/schemas/ExbP11dbClass1AAdjustment"
          },
          "amountNotDue": {
            "$ref": "#/components/schemas/ExbP11dbClass1AAdjustment"
          },
          "total": {
            "type": "string",
            "nullable": true
          },
          "payable": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExbP11dbClass1ATotalBenefit": {
        "type": "object",
        "properties": {
          "adjustmentRequired": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExbReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/Exb"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "ExpensesAndBenefits": {
        "type": "object",
        "properties": {
          "employer": {
            "$ref": "#/components/schemas/ExbEmployer"
          },
          "declarations": {
            "$ref": "#/components/schemas/ExbDeclarations"
          },
          "p11Db": {
            "$ref": "#/components/schemas/ExbP11db"
          },
          "p11DrecordCount": {
            "type": "integer",
            "format": "int32"
          },
          "p46CarRecordCount": {
            "type": "integer",
            "format": "int32"
          },
          "p11D": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExbP11d"
            },
            "nullable": true
          },
          "relatedTaxYear": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExternalDataCompany": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "schemeName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "When we retrieve data from an ExternalDataProvider we normalise it so that regardless of the provider the models are the same.\r\nThis model is used to represent a Company in an ExternalDataProvider"
      },
      "ExternalDataProvider": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "authScheme": {
            "$ref": "#/components/schemas/AuthScheme"
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "iconUrl": {
            "type": "string",
            "nullable": true
          },
          "connected": {
            "type": "boolean"
          },
          "connectedAs": {
            "type": "string",
            "nullable": true
          },
          "requiresConfig": {
            "type": "boolean"
          },
          "deferralUrl": {
            "type": "string",
            "nullable": true
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalDataProviderType"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExternalDataProviderId": {
        "enum": [
          "SmartPension_Employer",
          "SmartPension_Adviser",
          "PeoplesPension",
          "Xero",
          "Qbo",
          "Sage",
          "Nest",
          "Cashplus",
          "BreatheHr",
          "KashFlow",
          "FreeAgent",
          "FreeAgentPm",
          "Modulr",
          "Square",
          "Cezanne",
          "Ciphr",
          "Telleroo",
          "WeWorked",
          "RotaCloud",
          "Quinyx",
          "Csod",
          "Planday",
          "Starling",
          "Deputy",
          "Bottomline",
          "Twinfield",
          "MyePayWindow",
          "IFinance",
          "AccountsIQ",
          "EPaySlips",
          "NetSuite",
          "StackOne"
        ],
        "type": "string"
      },
      "ExternalDataProviderType": {
        "enum": [
          "PensionSchemes",
          "Accounting",
          "Payments",
          "Hr",
          "TimeAndAttendance",
          "EmployeePortal",
          "PremiumConnectedServices"
        ],
        "type": "string"
      },
      "ExternalEmployeeMapping": {
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "[readonly] The id for the employee in the external system",
            "nullable": true
          },
          "providerId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "status": {
            "$ref": "#/components/schemas/ExternalEmployeeMappingStatus"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "externalEmployee": {
            "$ref": "#/components/schemas/Employee"
          },
          "lastSyncDate": {
            "type": "string",
            "description": "[readonly] The date and time this mapping was last synchronised",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent details of an employee from an ExternalDataProvider, along with mapping information to an employee in the payroll system"
      },
      "ExternalEmployeeMappingStatus": {
        "enum": [
          "Unmapped",
          "Mapped",
          "Ignored",
          "Import"
        ],
        "type": "string"
      },
      "ExternalProviderConversation": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "request": {
            "type": "string",
            "nullable": true
          },
          "response": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "statusMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This model is used to provide details of a data exchange with an ExternalDataProvider"
      },
      "FieldModification": {
        "type": "object",
        "properties": {
          "fieldName": {
            "type": "string",
            "nullable": true
          },
          "isSignificant": {
            "type": "boolean"
          },
          "oldValue": {
            "type": "string",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FixedCode": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "rate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to enable calculation of Tax and NI.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "FlexibleDrawdown": {
        "enum": [
          "None",
          "DeathBenefit",
          "Pension",
          "SeriousIllHealth",
          "StandAloneLumpSum",
          "PensionCommencementExcess"
        ],
        "type": "string"
      },
      "Fps": {
        "type": "object",
        "properties": {
          "lateReason": {
            "$ref": "#/components/schemas/FpsLateReason"
          },
          "paymentDate": {
            "type": "string",
            "format": "date"
          },
          "overridePaymentDate": {
            "type": "string",
            "description": "If a value if provided here then it will be used in place of the actual PaymentDate on the FPS.\r\nThe value must fall in to the same Tax Period as the PaymentDate",
            "format": "date",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "format": "int32"
          },
          "correctionEmployees": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isCorrection": {
            "type": "boolean"
          },
          "supersededCount": {
            "type": "integer",
            "description": "The number of payments on this FPS that have been superseded by later versions",
            "format": "int32"
          },
          "fullPaymentSubmission": {
            "$ref": "#/components/schemas/FullPaymentSubmission"
          },
          "versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FpsPriorVersion"
            },
            "description": "If any of the payments on this FPS appear on another FPS then\r\nthen there will be an entry here for each of them.\r\nIf there is an entry where the FpsId matches this FPS then that means the FpsEmployee on this Fps\r\nis itself a prior version (ie, it's been superseded)",
            "nullable": true
          },
          "validationWarnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RtiValidationWarning"
            },
            "nullable": true,
            "readOnly": true
          },
          "payRunVersion": {
            "type": "integer",
            "description": "The supplementary pay run version of this FPS.",
            "format": "int32"
          },
          "iRmark": {
            "type": "string",
            "nullable": true
          },
          "xml": {
            "type": "string",
            "description": "This property will soon be removed and should not be used.\r\nThere is now a dedicated API endpoint for retrieving the XML for a submission.",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "employerReferences": {
            "$ref": "#/components/schemas/EmpRefs"
          },
          "govTalkSubmission": {
            "$ref": "#/components/schemas/GovTalkSubmission"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FpsBenefit": {
        "type": "object",
        "properties": {
          "car": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FpsCar"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsCar": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "nullable": true
          },
          "firstRegd": {
            "type": "string",
            "nullable": true
          },
          "cO2": {
            "type": "string",
            "nullable": true
          },
          "zeroEmissionsMileage": {
            "type": "string",
            "nullable": true
          },
          "fuel": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "amendment": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "string",
            "nullable": true
          },
          "availFrom": {
            "type": "string",
            "nullable": true
          },
          "cashEquiv": {
            "type": "string",
            "nullable": true
          },
          "availTo": {
            "type": "string",
            "nullable": true
          },
          "freeFuel": {
            "$ref": "#/components/schemas/FpsCarFuel"
          }
        },
        "additionalProperties": false
      },
      "FpsCarFuel": {
        "type": "object",
        "properties": {
          "provided": {
            "type": "string",
            "nullable": true
          },
          "cashEquiv": {
            "type": "string",
            "nullable": true
          },
          "withdrawn": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployee": {
        "type": "object",
        "properties": {
          "payrunEntryId": {
            "type": "string",
            "format": "uuid"
          },
          "employeeUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "item": {
            "$ref": "#/components/schemas/Item"
          },
          "employeeDetails": {
            "$ref": "#/components/schemas/FpsEmployeeDetails"
          },
          "employment": {
            "$ref": "#/components/schemas/FpsEmployment"
          },
          "validationWarnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RtiValidationWarning"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeDetails": {
        "type": "object",
        "properties": {
          "nino": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "$ref": "#/components/schemas/RtiEmployeeName"
          },
          "address": {
            "$ref": "#/components/schemas/RtiEmployeeAddress"
          },
          "birthDate": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "type": "string",
            "nullable": true
          },
          "passportNumber": {
            "type": "string",
            "nullable": true
          },
          "partnerDetails": {
            "$ref": "#/components/schemas/FpsEmployeeDetailsPartnerDetails"
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeDetailsPartnerDetails": {
        "type": "object",
        "properties": {
          "nino": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "$ref": "#/components/schemas/RtiEmployeeName"
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeFigsToDate": {
        "type": "object",
        "properties": {
          "taxablePay": {
            "type": "string",
            "nullable": true
          },
          "totalTax": {
            "type": "string",
            "nullable": true
          },
          "studentLoansTD": {
            "type": "string",
            "nullable": true
          },
          "postgradLoansTD": {
            "type": "string",
            "nullable": true
          },
          "benefitsTaxedViaPayrollYTD": {
            "type": "string",
            "nullable": true
          },
          "empeePenContribnsPaidYTD": {
            "type": "string",
            "nullable": true
          },
          "empeePenContribnsNotPaidYTD": {
            "type": "string",
            "nullable": true
          },
          "smpytd": {
            "type": "string",
            "nullable": true
          },
          "sppytd": {
            "type": "string",
            "nullable": true
          },
          "sapytd": {
            "type": "string",
            "nullable": true
          },
          "shppytd": {
            "type": "string",
            "nullable": true
          },
          "spbpytd": {
            "type": "string",
            "nullable": true
          },
          "sncpytd": {
            "type": "string",
            "nullable": true
          },
          "sspytd": {
            "type": "string",
            "nullable": true
          },
          "gross": {
            "type": "string",
            "nullable": true
          },
          "netPay": {
            "type": "string",
            "nullable": true
          },
          "additions": {
            "type": "string",
            "nullable": true
          },
          "deductions": {
            "type": "string",
            "nullable": true
          },
          "takeHomePay": {
            "type": "string",
            "nullable": true
          },
          "adjustments": {
            "type": "string",
            "nullable": true
          },
          "mapsMiles": {
            "type": "string",
            "nullable": true
          },
          "foreignTaxAmount": {
            "type": "string",
            "nullable": true
          },
          "foreignTaxAmountReclaimed": {
            "type": "string",
            "nullable": true
          },
          "pensionableEarnings": {
            "type": "string",
            "nullable": true
          },
          "pensionablePay": {
            "type": "string",
            "nullable": true
          },
          "employerPensionContribution": {
            "type": "string",
            "nullable": true
          },
          "employeePensionContribution": {
            "type": "string",
            "nullable": true
          },
          "employeePensionContributionAvc": {
            "type": "string",
            "nullable": true
          },
          "paymentAfterLeaving": {
            "type": "string",
            "nullable": true
          },
          "taxOnPaymentAfterLeaving": {
            "type": "string",
            "nullable": true
          },
          "nonTaxOrNICPmt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeFlexibleDrawdown": {
        "type": "object",
        "properties": {
          "flexiblyAccessingPensionRights": {
            "type": "string",
            "nullable": true
          },
          "pensionDeathBenefit": {
            "type": "string",
            "nullable": true
          },
          "seriousIllHealthLumpSum": {
            "type": "string",
            "nullable": true
          },
          "standAloneLumpSum": {
            "type": "string",
            "nullable": true
          },
          "pensionCommencementExcess": {
            "type": "string",
            "nullable": true
          },
          "taxablePayment": {
            "type": "string",
            "nullable": true
          },
          "nontaxablePayment": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeNIlettersAndValues": {
        "type": "object",
        "properties": {
          "nIletter": {
            "type": "string",
            "nullable": true
          },
          "grossEarningsForNICsInPd": {
            "type": "string",
            "nullable": true
          },
          "grossEarningsForNICsYTD": {
            "type": "string",
            "nullable": true
          },
          "atLELYTD": {
            "type": "string",
            "nullable": true
          },
          "leLtoPTYTD": {
            "type": "string",
            "nullable": true
          },
          "pTtoUELYTD": {
            "type": "string",
            "nullable": true
          },
          "totalEmpNICInPd": {
            "type": "string",
            "nullable": true
          },
          "totalEmpNICYTD": {
            "type": "string",
            "nullable": true
          },
          "empeeContribnsInPd": {
            "type": "string",
            "nullable": true
          },
          "empeeContribnsYTD": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeePayment": {
        "type": "object",
        "properties": {
          "bacsHashCode": {
            "type": "string",
            "nullable": true
          },
          "payFreq": {
            "type": "string",
            "nullable": true
          },
          "pmtDate": {
            "type": "string",
            "nullable": true
          },
          "lateReason": {
            "type": "string",
            "nullable": true
          },
          "weekNo": {
            "type": "string",
            "nullable": true
          },
          "monthNo": {
            "type": "string",
            "nullable": true
          },
          "periodsCovered": {
            "type": "integer",
            "format": "int32"
          },
          "aggregatedEarnings": {
            "type": "string",
            "nullable": true
          },
          "pmtAfterLeaving": {
            "type": "string",
            "nullable": true
          },
          "hoursWorked": {
            "type": "string",
            "nullable": true
          },
          "taxCode": {
            "$ref": "#/components/schemas/FpsEmployeeTaxCode"
          },
          "taxablePay": {
            "type": "string",
            "nullable": true
          },
          "nonTaxOrNICPmt": {
            "type": "string",
            "nullable": true
          },
          "dednsFromNetPay": {
            "type": "string",
            "nullable": true
          },
          "payAfterStatDedns": {
            "type": "string",
            "nullable": true
          },
          "benefitsTaxedViaPayroll": {
            "type": "string",
            "nullable": true
          },
          "class1ANICsYTD": {
            "type": "string",
            "nullable": true
          },
          "benefits": {
            "$ref": "#/components/schemas/FpsBenefit"
          },
          "empeePenContribnsPaid": {
            "type": "string",
            "nullable": true
          },
          "itemsSubjectToClass1NIC": {
            "type": "string",
            "nullable": true
          },
          "empeePenContribnsNotPaid": {
            "type": "string",
            "nullable": true
          },
          "studentLoanRecovered": {
            "$ref": "#/components/schemas/StudentLoanRecovered"
          },
          "postgradLoanRecovered": {
            "type": "string",
            "nullable": true
          },
          "taxDeductedOrRefunded": {
            "type": "string",
            "nullable": true
          },
          "onStrike": {
            "type": "string",
            "nullable": true
          },
          "unpaidAbsence": {
            "type": "string",
            "nullable": true
          },
          "smpytd": {
            "type": "string",
            "nullable": true
          },
          "sppytd": {
            "type": "string",
            "nullable": true
          },
          "sapytd": {
            "type": "string",
            "nullable": true
          },
          "shPPYTD": {
            "type": "string",
            "nullable": true
          },
          "spbpytd": {
            "type": "string",
            "nullable": true
          },
          "spbpnireytd": {
            "type": "string",
            "nullable": true
          },
          "miscarriageNIRE": {
            "type": "string",
            "nullable": true
          },
          "employeeWorkplacePostcodeNIRE": {
            "type": "string",
            "nullable": true
          },
          "sncpytd": {
            "type": "string",
            "nullable": true
          },
          "trivialCommutationPayment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FpsEmployeeTrivialCommutationPayment"
            },
            "nullable": true
          },
          "flexibleDrawdown": {
            "$ref": "#/components/schemas/FpsEmployeeFlexibleDrawdown"
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeSeconded": {
        "type": "object",
        "properties": {
          "inOutUK": {
            "type": "string",
            "nullable": true
          },
          "stay183DaysOrMore": {
            "type": "string",
            "nullable": true
          },
          "stayLessThan183Days": {
            "type": "string",
            "nullable": true
          },
          "eeaCitizen": {
            "type": "string",
            "nullable": true
          },
          "epM6": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeStarter": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "nullable": true
          },
          "startDec": {
            "type": "string",
            "nullable": true
          },
          "studentLoan": {
            "type": "string",
            "nullable": true
          },
          "postgradLoan": {
            "type": "string",
            "nullable": true
          },
          "occPension": {
            "$ref": "#/components/schemas/FpsEmployeeStarterOccPension"
          },
          "seconded": {
            "$ref": "#/components/schemas/FpsEmployeeSeconded"
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeStarterOccPension": {
        "type": "object",
        "properties": {
          "bereaved": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeTaxCode": {
        "type": "object",
        "properties": {
          "basisNonCumulative": {
            "type": "string",
            "nullable": true
          },
          "taxRegime": {
            "type": "string",
            "nullable": true
          },
          "taxCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployeeTrivialCommutationPayment": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployerPayIdChanged": {
        "type": "object",
        "properties": {
          "payrollIdChangedIndicator": {
            "type": "string",
            "nullable": true
          },
          "oldPayrollId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsEmployment": {
        "type": "object",
        "properties": {
          "employeeCurrentNiLetter": {
            "type": "string",
            "nullable": true
          },
          "offPayrollWorker": {
            "type": "string",
            "nullable": true
          },
          "occPenInd": {
            "type": "string",
            "nullable": true
          },
          "directorsNIC": {
            "type": "string",
            "nullable": true
          },
          "taxWkOfApptOfDirector": {
            "type": "string",
            "nullable": true
          },
          "starter": {
            "$ref": "#/components/schemas/FpsEmployeeStarter"
          },
          "employeeWorkplacePostcode": {
            "type": "string",
            "nullable": true
          },
          "payId": {
            "type": "string",
            "nullable": true
          },
          "payIdChgd": {
            "$ref": "#/components/schemas/FpsEmployerPayIdChanged"
          },
          "paymentToANonIndividual": {
            "type": "string",
            "nullable": true
          },
          "irrEmp": {
            "type": "string",
            "nullable": true
          },
          "leavingDate": {
            "type": "string",
            "nullable": true
          },
          "figuresToDate": {
            "$ref": "#/components/schemas/FpsEmployeeFigsToDate"
          },
          "payment": {
            "$ref": "#/components/schemas/FpsEmployeePayment"
          },
          "nIlettersAndValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FpsEmployeeNIlettersAndValues"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FpsFields": {
        "type": "object",
        "properties": {
          "offPayrollWorker": {
            "type": "boolean"
          },
          "irregularPaymentPattern": {
            "type": "boolean",
            "description": "True if employee is currently on an irregular payment patter"
          },
          "nonIndividual": {
            "type": "boolean",
            "description": "True if Employee's payments are being made to a body (eg, trustee, corporate organisation or personal representative)"
          },
          "hoursNormallyWorked": {
            "$ref": "#/components/schemas/HoursNormallyWorked"
          },
          "excludeFromRtiSubmissions": {
            "type": "boolean",
            "description": "True if Employee is excluded from RTI submissions"
          }
        },
        "additionalProperties": false
      },
      "FpsLateReason": {
        "enum": [
          "NoneGiven",
          "NotionalExpat",
          "NotionalErs",
          "NotionalOther",
          "Class1",
          "MicroEmployer",
          "NoRequirement",
          "ReasonableExcuse",
          "Correction"
        ],
        "type": "string"
      },
      "FpsPriorVersion": {
        "type": "object",
        "properties": {
          "payRunEntryId": {
            "type": "string",
            "format": "uuid"
          },
          "fpsId": {
            "type": "string",
            "description": "The Id of the FPS that contains an earlier version of the PayRunEntry",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "FpsReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/Fps"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "FromToDates": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "FullPaymentSubmission": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FpsEmployee"
            },
            "nullable": true
          },
          "relatedTaxYear": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FullSummaryOfPayReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FullSummaryOfPayReportLine"
            },
            "nullable": true
          },
          "deductionLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FullSummaryOfPayReportLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "FullSummaryOfPayReportLine": {
        "type": "object",
        "properties": {
          "payCode": {
            "$ref": "#/components/schemas/PayCode"
          },
          "value": {
            "type": "number",
            "format": "double"
          },
          "erValue": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "qty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "headCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "FullSummaryOfPayReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/FullSummaryOfPayReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "FurloughCalculationBasis": {
        "enum": [
          "ActualPaidAmount",
          "DailyReferenceAmount",
          "MonthlyReferenceAmount"
        ],
        "type": "string"
      },
      "FurloughReport": {
        "type": "object",
        "properties": {
          "maxClaimPerEmployee": {
            "type": "number",
            "format": "double"
          },
          "percentageOfNIAndPensionToClaim": {
            "type": "number",
            "format": "double"
          },
          "govtContribRate": {
            "type": "number",
            "format": "double"
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "employerReference": {
            "type": "string",
            "nullable": true
          },
          "companyCrn": {
            "type": "string",
            "nullable": true
          },
          "ctUtr": {
            "type": "string",
            "nullable": true
          },
          "saUtr": {
            "type": "string",
            "nullable": true
          },
          "claimPeriodStartDate": {
            "type": "string",
            "format": "date",
            "readOnly": true
          },
          "claimPeriodEndDate": {
            "type": "string",
            "format": "date",
            "readOnly": true
          },
          "numberOfEmployeesBeingFurloughed": {
            "type": "integer",
            "format": "int32"
          },
          "totalClaimAmount": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "totalGrossPay": {
            "type": "number",
            "format": "double"
          },
          "amountClaimedForGrossPayToEmployeesOnFurloughForThePeriod": {
            "type": "number",
            "format": "double"
          },
          "amountClaimedForEmployerNICsContributionsForFurloughedEmployees": {
            "type": "number",
            "format": "double"
          },
          "amountClaimedForEmployersAutoEnrolmentPensionCostsForFurloughedEmployees": {
            "type": "number",
            "format": "double"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FurloughReportLine"
            },
            "nullable": true
          },
          "bankAccountNumber": {
            "type": "string",
            "nullable": true
          },
          "bankSortCode": {
            "type": "string",
            "nullable": true
          },
          "bankAccountHoldersFirstName": {
            "type": "string",
            "nullable": true
          },
          "bankAccountHoldersLastName": {
            "type": "string",
            "nullable": true
          },
          "bankAccountHoldersAddress": {
            "type": "string",
            "nullable": true
          },
          "buildingSocietyRollNumber": {
            "type": "string",
            "nullable": true
          },
          "companyAddress": {
            "type": "string",
            "nullable": true
          },
          "contactName": {
            "type": "string",
            "nullable": true
          },
          "contactNumber": {
            "type": "string",
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "FurloughReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "employeesFullName": {
            "type": "string",
            "nullable": true
          },
          "employeesNINO": {
            "type": "string",
            "nullable": true
          },
          "employeesPayrollReferenceNumber": {
            "type": "string",
            "nullable": true
          },
          "furloughedDays": {
            "type": "integer",
            "format": "int32"
          },
          "daysInPeriod": {
            "type": "integer",
            "format": "int32"
          },
          "hoursNormallyWorked": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "hoursFurloughed": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "percentageOfFurloughedDaysWorked": {
            "type": "number",
            "format": "double"
          },
          "grossPay": {
            "type": "number",
            "format": "double"
          },
          "grossPayClaim": {
            "type": "number",
            "format": "double"
          },
          "niClaim": {
            "type": "number",
            "format": "double"
          },
          "pensionClaim": {
            "type": "number",
            "format": "double"
          },
          "totalClaim": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "furloughStart": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "furloughEnd": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FurloughReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/FurloughReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "Gender": {
        "enum": [
          "Male",
          "Female"
        ],
        "type": "string"
      },
      "GenderPayGapLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "fullPay": {
            "type": "string",
            "nullable": true
          },
          "ordinaryPay": {
            "type": "number",
            "format": "double"
          },
          "periodBonus": {
            "type": "number",
            "format": "double"
          },
          "bonusRbp": {
            "type": "number",
            "format": "double"
          },
          "weeklyHours": {
            "type": "number",
            "format": "double"
          },
          "hourlyRate": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "GenderPayGapReport": {
        "type": "object",
        "properties": {
          "genderPayGapLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GenderPayGapLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "GenderPayGapReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/GenderPayGapReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "GenderPayGapSnapShotDate": {
        "enum": [
          "March",
          "April"
        ],
        "type": "string"
      },
      "GovTalk": {
        "type": "object",
        "properties": {
          "fullPaymentSubmissionNamespace": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "fullPaymentSubmissionNamespaceVersion": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "employerPaymentSummaryNamespace": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "employerPaymentSummaryNamespaceVersion": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "niNoVerificationRequestNameSpace": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "cisVerificationRequestNameSpace": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "cis300NameSpace": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "expensesAndBenefitsNameSpace": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "expensesAndBenefitsNameSpaceVersion": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses submit documents to the HMRC Gateway.\r\nIt is used internally when our engine communicates with HMRC.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "GovTalkError": {
        "type": "object",
        "properties": {
          "raisedBy": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GovTalkSubmission": {
        "type": "object",
        "properties": {
          "rawResponse": {
            "type": "string",
            "nullable": true
          },
          "messageClass": {
            "type": "string",
            "nullable": true
          },
          "pollInterval": {
            "type": "integer",
            "format": "int32"
          },
          "lastPoll": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "correlationId": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "url": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/SubmissionStatus"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "iRmark": {
            "type": "string",
            "nullable": true
          },
          "errorsJson": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GovTalkError"
            },
            "nullable": true
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "GrossToNetReport": {
        "type": "object",
        "properties": {
          "forCis": {
            "type": "boolean"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GrossToNetReportLine"
            },
            "nullable": true
          },
          "cisLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GrossToNetReportCisLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "GrossToNetReportCisLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "totalGross": {
            "type": "number",
            "format": "double"
          },
          "labour": {
            "type": "number",
            "format": "double"
          },
          "materials": {
            "type": "number",
            "format": "double"
          },
          "taxableGross": {
            "type": "number",
            "format": "double"
          },
          "cisDeduction": {
            "type": "number",
            "format": "double"
          },
          "umbrellaFee": {
            "type": "number",
            "format": "double"
          },
          "vat": {
            "type": "number",
            "format": "double"
          },
          "payment": {
            "type": "number",
            "format": "double"
          },
          "lastName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GrossToNetReportLine": {
        "type": "object",
        "properties": {
          "niNumber": {
            "type": "string",
            "nullable": true
          },
          "totalGross": {
            "type": "number",
            "format": "double"
          },
          "taxableGross": {
            "type": "number",
            "format": "double"
          },
          "netPay": {
            "type": "number",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "format": "double"
          },
          "employeeNi": {
            "type": "number",
            "format": "double"
          },
          "employerNi": {
            "type": "number",
            "format": "double"
          },
          "employeePension": {
            "type": "number",
            "format": "double"
          },
          "employerPension": {
            "type": "number",
            "format": "double"
          },
          "studentOrPgLoan": {
            "type": "number",
            "format": "double"
          },
          "statutoryPayments": {
            "type": "number",
            "format": "double"
          },
          "attachments": {
            "type": "number",
            "format": "double"
          },
          "otherDeductions": {
            "type": "number",
            "format": "double"
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "isNewStarter": {
            "type": "boolean"
          },
          "isLeaver": {
            "type": "boolean"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GrossToNetReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/GrossToNetReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "HmrcDetails": {
        "type": "object",
        "properties": {
          "officeNumber": {
            "maxLength": 3,
            "type": "string",
            "nullable": true
          },
          "payeReference": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "accountsOfficeReference": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "econ": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "utr": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "coTax": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "employmentAllowance": {
            "type": "boolean"
          },
          "employmentAllowanceMaxClaim": {
            "type": "number",
            "description": "You might reduce this from the default if you've made/are making a claim in another system",
            "format": "double"
          },
          "smallEmployersRelief": {
            "type": "boolean"
          },
          "apprenticeshipLevy": {
            "type": "boolean"
          },
          "apprenticeshipLevyAllowance": {
            "type": "number",
            "format": "double"
          },
          "quarterlyPaymentSchedule": {
            "type": "boolean",
            "description": "Set to true if the employer pays HMRC on a quarterly schedule.\r\nA value of false implies a monthly schedule.\r\n<b>Warning:</b> Changing this value after starting PayRuns will\r\ndelete any existing payments or adjustments you may have entered."
          },
          "includeEmploymentAllowanceOnMonthlyJournal": {
            "type": "boolean",
            "description": "If the employer is not on a QuarterlyPaymentSchedule\r\nand is claiming EmploymentAllowance, then set this to true to include a line for\r\nEmployment Allowance on the journal for the monthly schedule."
          },
          "carryForwardUnpaidLiabilities": {
            "type": "boolean",
            "description": "If set to true then any unpaid amounts from previous periods will be brought forward\r\nto work out the liability for the current period.\r\nYou'd set this to false if you don't want to track payments."
          },
          "paymentDateRule": {
            "$ref": "#/components/schemas/PaymentDateRule"
          },
          "paymentDateDayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HmrcLiability": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "[readonly] A descriptive name for the Period",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "periodEnding": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "periodComplete": {
            "type": "boolean",
            "description": "[readonly] Indicates whether or not all PayRuns for this period have been completed"
          },
          "recoverableAmountsEpsCreated": {
            "type": "boolean",
            "description": "[readonly] If there are recoverable amount present (ie, SMP) and the Period is complete then this field Indicates \r\nwhether or not an EPS has been created up to the final tax month of this period to declare\r\nthe recoverable amounts"
          },
          "apprenticeshipLevyEpsCreated": {
            "type": "boolean",
            "description": "[readonly] If there is an Apprenticeship LEvy amount present and the Period is complete then this field Indicates \r\nwhether or not an EPS has been created up to the final tax month of this period to declare\r\nthe amount"
          },
          "payRuns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayRun"
            },
            "nullable": true
          },
          "tax": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC for PAYE in period",
            "format": "double"
          },
          "cisDeductions": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC for CIS Deductions made in period",
            "format": "double"
          },
          "postgradLoanDeductions": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC for Postgrad Loan Deductions made in period",
            "format": "double"
          },
          "studentLoanDeductions": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC for Student Loan Deductions made in period",
            "format": "double"
          },
          "employeeNic": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC for Employee NIC Contributions withheld in period",
            "format": "double"
          },
          "employerNic": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC for Employer NIC Contributions due on payments in period",
            "format": "double"
          },
          "realTimeClass1ANic": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC for Employer NIC Contributions due on payments in period",
            "format": "double"
          },
          "smp": {
            "type": "number",
            "description": "[readonly] SMP recovered from payments in period",
            "format": "double"
          },
          "smpNic": {
            "type": "number",
            "description": "[readonly] SMP NIC Compensation for period",
            "format": "double"
          },
          "spp": {
            "type": "number",
            "description": "[readonly] SPP recovered from payments in period",
            "format": "double"
          },
          "sppNic": {
            "type": "number",
            "description": "[readonly] SPP Nic Compensation for period",
            "format": "double"
          },
          "sap": {
            "type": "number",
            "description": "[readonly] SAP recovered from payments in period",
            "format": "double"
          },
          "sapNic": {
            "type": "number",
            "description": "[readonly] SAP Nic Compensation for period",
            "format": "double"
          },
          "shpp": {
            "type": "number",
            "description": "[readonly] ShPP recovered from payments in period",
            "format": "double"
          },
          "shppNic": {
            "type": "number",
            "description": "[readonly] ShPP Nic Compensation for period",
            "format": "double"
          },
          "spbp": {
            "type": "number",
            "description": "[readonly] SPBP recovered from payments in period",
            "format": "double"
          },
          "spbpNic": {
            "type": "number",
            "description": "[readonly] SPBP Nic Compensation for period",
            "format": "double"
          },
          "spbpNorthernIreland": {
            "type": "number",
            "description": "[readonly] SPBP(Northern Ireland) recovered from payments in period",
            "format": "double"
          },
          "spbpNorthernIrelandNic": {
            "type": "number",
            "description": "[readonly] SPBP(Northern Ireland) Nic Compensation for period",
            "format": "double"
          },
          "sncp": {
            "type": "number",
            "description": "[readonly] SNCP recovered from payments in period",
            "format": "double"
          },
          "sncpNic": {
            "type": "number",
            "description": "[readonly] SNCP Nic Compensation for period",
            "format": "double"
          },
          "eligibleForEmploymentAllowance": {
            "type": "boolean",
            "description": "[readonly] Indicates whether the Employer settings say the Employer is eligible for Employment Allowance"
          },
          "employmentAllowanceClaim": {
            "type": "number",
            "description": "Amount to claim with respect to the Employment Allowance",
            "format": "double"
          },
          "employmentAllowanceClaimAuto": {
            "type": "boolean",
            "description": "If set to true, we'll automatically claim the maximum allowed.\r\nIf set to false then you can enter your own value.\r\nIf EligibleForEmploymentAllowance is false then the EmploymentAllowanceClaim will \r\nalways be overwritten with a zero value regardless of this property"
          },
          "liableForApprenticeshipLevy": {
            "type": "boolean",
            "description": "[readonly] Indicates whether the Employer settings say the Employer is liable for the Apprenticeship Levy"
          },
          "apprenticeshipLevy": {
            "type": "number",
            "description": "Amount due with respect to the Apprenticeship Levy",
            "format": "double"
          },
          "apprenticeshipLevyAuto": {
            "type": "boolean",
            "description": "If set to true, we'll automatically calculate your liability\r\nIf set to false then you can enter your own value.\r\nIf LiableForApprenticeshipLevy is false then the ApprenticeshipLevy will \r\nalways be overwritten with a zero value regardless of this property"
          },
          "liabilityArisingInPeriod": {
            "type": "number",
            "description": "[readonly] Total Liability (before any deductions) arising in this Period",
            "format": "double",
            "readOnly": true
          },
          "dueInPreviousPeriods": {
            "type": "number",
            "description": "[readonly] Amount due to HMRC in previous periods for this Tax Year",
            "format": "double"
          },
          "paidInPreviousPeriods": {
            "type": "number",
            "description": "[readonly] Amount paid to HMRC in previous periods for this Tax Year",
            "format": "double"
          },
          "employmentAllowanceClaimInPreviousPeriods": {
            "type": "number",
            "description": "[readonly] The amount of Employment Allowance claimed in previous periods for this Tax Year",
            "format": "double"
          },
          "receivedFromHMRCToRefundTax": {
            "type": "number",
            "description": "Any amount received from HMRC to refund Tax in Period",
            "format": "double"
          },
          "receivedFromHMRCToPayStatutoryPay": {
            "type": "number",
            "description": "Any amount received from HMRC to pay Statutory Pay Period",
            "format": "double"
          },
          "cisDeductionsSuffered": {
            "type": "number",
            "description": "CIS Deductions Suffered in Period",
            "format": "double"
          },
          "adjustment": {
            "type": "number",
            "description": "Any manual adjustment for Period",
            "format": "double"
          },
          "netLiabilityForPeriod": {
            "type": "number",
            "description": "[readonly] Net Liability (including any deductions/additions) arising in this Period",
            "format": "double",
            "readOnly": true
          },
          "totalPaid": {
            "type": "number",
            "description": "[readonly] The total value of all payments in this period",
            "format": "double"
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HmrcPayment"
            },
            "nullable": true
          },
          "fpsList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "nullable": true
          },
          "allowLinkedEps": {
            "type": "boolean",
            "description": "If true this will allow you to submit a combined Employer Payment Summary"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HmrcPayment": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HolidayAccrual": {
        "enum": [
          "RegularPayOnly",
          "AllGrossPay",
          "PaycodeSet",
          "WorkingPatternHours"
        ],
        "type": "string"
      },
      "HolidayAccrualDefaultRateType": {
        "enum": [
          "HourlyRate",
          "AverageHolidayRate",
          "FixedPeriodAmount"
        ],
        "type": "string"
      },
      "HolidayReport": {
        "type": "object",
        "properties": {
          "accrualsReport": {
            "type": "boolean"
          },
          "accrualsHrsReport": {
            "type": "boolean"
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HolidayReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "HolidayReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "dayRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "leaveSettings": {
            "$ref": "#/components/schemas/LeaveSettings"
          }
        },
        "additionalProperties": false
      },
      "HolidayReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/HolidayReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "HolidaySchemeDurationType": {
        "enum": [
          "Hours",
          "Days"
        ],
        "type": "string"
      },
      "HolidayType": {
        "enum": [
          "Days",
          "Accrual_Money",
          "Accrual_Days",
          "Accrual_Hours",
          "Avg_Enhanced_Days"
        ],
        "type": "string"
      },
      "HourlyPayReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HourlyPayReportLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "HourlyPayReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "nullable": true
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "hours": {
            "type": "number",
            "format": "double"
          },
          "rate": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "HourlyPayReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/HourlyPayReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "HoursNormallyWorked": {
        "enum": [
          "LessThan16",
          "MoreThan16",
          "MoreThan24",
          "MoreThan30",
          "NotRegular"
        ],
        "type": "string"
      },
      "HtmlEmailSettings": {
        "type": "object",
        "properties": {
          "bodyCssStyle": {
            "type": "string",
            "nullable": true
          },
          "fontCssStyle": {
            "type": "string",
            "nullable": true
          },
          "buttonCssStyle": {
            "type": "string",
            "nullable": true
          },
          "headerHtml": {
            "type": "string",
            "nullable": true
          },
          "footerHtml": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HtmlInsertionPoint": {
        "enum": [
          "CreateEmployer",
          "EmployeeDetails"
        ],
        "type": "string"
      },
      "IncrementRule": {
        "enum": [
          "Manual",
          "Annual",
          "April",
          "April6m"
        ],
        "type": "string"
      },
      "Invitation": {
        "required": [
          "emailAddress"
        ],
        "type": "object",
        "properties": {
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "emailAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The email address of the user that is being invited to access the Employer",
            "format": "email"
          },
          "message": {
            "type": "string",
            "description": "An optional message to include in the email sent to the EmailAddress",
            "nullable": true
          },
          "role": {
            "$ref": "#/components/schemas/UserRole"
          },
          "emailId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "emailStatus": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "invitedBy": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Invitations are used to invite other users to access an existing Employer"
      },
      "Item": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ItemListReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] If the type is application.json then this will contain a JSON representation of the relevant model",
            "nullable": true
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "JobStatus": {
        "enum": [
          "Queued",
          "Executing",
          "Completed",
          "Failed",
          "CompletedWithErrors"
        ],
        "type": "string"
      },
      "JobType": {
        "enum": [
          "Report",
          "Import",
          "PayRun"
        ],
        "type": "string"
      },
      "JournalCsvFormat": {
        "enum": [
          "Default",
          "SapS4Hana",
          "MappedOutput"
        ],
        "type": "string"
      },
      "JournalTemplate": {
        "type": "object",
        "properties": {
          "header": {
            "type": "string",
            "description": "Header of Journal Template",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "Content of Journal Template",
            "nullable": true
          },
          "useColumnHeaders": {
            "type": "boolean",
            "description": "Use Column Headers indicates whether to use column headers while parsing the content in CSV format"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "JournalTokenType": {
        "enum": [
          "SystemToken",
          "CustomToken",
          "TextToken",
          "ValueToken"
        ],
        "type": "string"
      },
      "Leave": {
        "type": "object",
        "properties": {
          "providerId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "externalId": {
            "maxLength": 100,
            "type": "string",
            "description": "If the Leave comes from an ExternalDataProvider, then this is its Id in the ExternalDataProvider",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/LeaveType"
          },
          "pay": {
            "$ref": "#/components/schemas/LeavePayType"
          },
          "payFrequency": {
            "$ref": "#/components/schemas/StatPayFrequency"
          },
          "payRunExistsWithStatPay": {
            "type": "boolean"
          },
          "from": {
            "type": "string",
            "description": "The first day of Leave.\r\nIf it's a half day PM then set the time portion to 12:00:00, otherwise leave it blank or set it to 00:00:00",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "description": "The last day of Leave.\r\nIf it's a half day AM then set the time portion to 11:59:59, otherwise set it to 23:59:59",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 300,
            "type": "string",
            "description": "A free-form text field to record any comments",
            "nullable": true
          },
          "averageWeeklyEarnings": {
            "type": "number",
            "description": "The employees average weekly earnings. Only relevant for Statutory Pay\r\nIt's advised that you don't try to calculate this yourself.",
            "format": "double"
          },
          "automaticAWECalculation": {
            "type": "boolean",
            "description": "If set to True then we'll automatically calculate the AverageWeeklyEarnings. \r\nSet it to false if you want to manually provide a figure that overrides our calculations"
          },
          "babyDate": {
            "type": "string",
            "description": "Only required for Parental Leave with Statutory Pay\r\nIf Type is Maternity or Paternity then this is the date the baby is due.\r\nFor Adoption this is the Matching Date.\r\nFor Neonatal Care is the Baby Due / Matching / Placement Date",
            "format": "date",
            "nullable": true
          },
          "secondaryBabyDate": {
            "type": "string",
            "description": "Only used for Parental Leave with Statutory Pay\r\nIf Type is Maternity, Paternity, SharedParental (Birth) then this is the the Baby Born Date.\r\nFor Adoption or SharedParental (Adoption) this is the Expected Placement Date.",
            "format": "date",
            "nullable": true
          },
          "tertiaryBabyDate": {
            "type": "string",
            "description": "Only used for Parental Leave with Statutory Pay\r\nIf Type is Adoption this is the Placement Date.\r\nIf Type is Neonatal Care is the Date Baby Entered Neonatal Care",
            "format": "date",
            "nullable": true
          },
          "overridePaymentDescription": {
            "type": "boolean",
            "description": "If Pay is StatutoryPay and you want to override our description that goes with the payment then set this to true"
          },
          "overridenPaymentDescription": {
            "maxLength": 150,
            "type": "string",
            "description": "If OverridePaymentDescription is true and Pay is set to StatutoryPay then we'll use this as the description for the payment amount.",
            "nullable": true
          },
          "workingDays": {
            "type": "number",
            "description": "[readonly] The number of working days covered by this leave.\r\nThis is calculated based on the employees Working Pattern.",
            "format": "double"
          },
          "workingDaysOverride": {
            "type": "number",
            "description": "If a value is provided here then this will be used in place of the calculated WorkingDays value",
            "format": "double",
            "nullable": true
          },
          "totalDays": {
            "type": "number",
            "description": "[readonly] The number of days covered by this leave, regardless of whether or not they're working days.\r\nThis is calculated based on the employees Working Pattern.",
            "format": "double"
          },
          "totalDaysOverride": {
            "type": "number",
            "description": "If a value is provided here then this will be used in place of the calculated TotalDays value",
            "format": "double",
            "nullable": true
          },
          "useAssumedPensionablePay": {
            "type": "boolean",
            "description": "If this Leave has Statutory Pay then if this is set to True\r\nwe will use the value set in AssumedPensionablePay to work out the employer pension contributions"
          },
          "assumedPensionablePays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveAssumedPensionablePay"
            },
            "description": "if UseAssumedPensionablePay is True, then this is the value used to calculate the employer pension contributions",
            "nullable": true
          },
          "offsetPay": {
            "type": "boolean",
            "description": "If this Leave has Statutory Pay  and this is set to True and the employe eis paid a fixed amoutn per period\r\nwith Leave Adjustments set to automatic, then we'll reduce their pay for the period by the statutory amount\r\nso the employee still gets paid the full amount."
          },
          "sspPayFromDayOne": {
            "type": "boolean",
            "description": "If this is Sick Leave with Statutory Pay then setting this to true\r\nwill force SSP to be paid from day one rather than the usual rule \r\nof the first Working Day after 3 Qualifying Days"
          },
          "payAsOther": {
            "type": "boolean",
            "description": "For Enhanced Average Days Holiday Pay Schemes - indicates whether days should be paid at Standard Daily Rate instead of Enhanced Average Rate.\r\nOnly applicable when employee is on an Enhanced Holiday Scheme and Leave Type is Holiday with AverageDays pay type.\r\nWhen true, all days are paid at the standard daily rate (HOLDAYRATE) instead of the enhanced average rate (AVGHOLDAYS)."
          },
          "linkedPiw": {
            "$ref": "#/components/schemas/LinkedPiw"
          },
          "kitSplitDays": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "date-time"
            },
            "description": "If the LeaveType supports KIT/SPLIT days then use this property to store the list of dates",
            "nullable": true
          },
          "historicSspRequiresProcessing": {
            "type": "boolean",
            "description": "Only used during the creation of historical SSP.\r\nWhen creating historical SSP, this will determine whether to pay that leave in the next PayRun."
          },
          "historicSxpRequiresProcessing": {
            "type": "boolean",
            "description": "Used during to determine whether to back pay before current payrun"
          },
          "openingPay": {
            "type": "number",
            "description": "Opening pay which has already been paid to the employee in another system",
            "format": "double",
            "nullable": true
          },
          "useOpeningPay": {
            "type": "boolean",
            "description": "Use the OpeningPay which has already been paid in another system"
          },
          "historicOspRequiresProcessing": {
            "type": "boolean",
            "description": "Only used during the creation of sickness Occupational Policy.\r\nWhen creating historical SOP, this will determine whether to pay that leave in the next PayRun."
          },
          "historicOmpRequiresProcessing": {
            "type": "boolean",
            "description": "Only used during the creation and update of occupational maternity leaves.\r\nWhen creating or updating historical occupational leaves, this will determine whether to pay the historic payments or correction in the next PayRun."
          },
          "historicSmpRequiresProcessing": {
            "type": "boolean",
            "description": "Only used during the creation and update of statutory maternity leaves.\r\nWhen creating or updating historical statutory maternity leaves, this will determine whether to pay the historic payments or correction in the next PayRun."
          },
          "occupationalMaternityPolicyUniqueId": {
            "type": "string",
            "description": "Occupational Maternity Policy Id when leave type is Maternity and payment type is occupational policy",
            "format": "uuid",
            "nullable": true
          },
          "openingOmpPay": {
            "type": "number",
            "description": "Opening occupational pay which has already been paid to the employee",
            "format": "double",
            "nullable": true
          },
          "payRunExistsWithOccMaternityPay": {
            "type": "boolean",
            "description": "Indicates whether there is occupational maternity payment associated with a leave in the current pay run."
          },
          "calculationType": {
            "$ref": "#/components/schemas/LeaveCalculationType"
          },
          "strikeHoursToDeduct": {
            "type": "number",
            "description": "The number of hours to be deducted at the employee's contractual rate\r\nThis property is valid for strike deducted hours",
            "format": "double",
            "nullable": true
          },
          "customPayments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveCustomPayment"
            },
            "description": "If this is Sick Leave with Custom Payment, then this stores the RoleId, PercentOfPay and PaySSPInAddition for each\r\nrole assigned to an employee that did not end before the start date of the absence.",
            "nullable": true
          },
          "customProRataRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveCustomProRataRule"
            },
            "description": "If this is a Leave that supports changing the pro rata at leave level,\r\nThis stores the RoleId and ProRataMethod for each\r\nrole assigned to an employee that did not end before the start date of the absence.",
            "nullable": true
          },
          "lastProcessedFrom": {
            "type": "string",
            "description": "[readonly] Last Processed From Date\r\nIf this Leave has already been processed,\r\nthis will be the original leave from date",
            "format": "date",
            "nullable": true
          },
          "isReversed": {
            "type": "boolean",
            "description": "If the reversal of this Leave has already been processed,\r\nthis will be set to true"
          },
          "paymentTier": {
            "$ref": "#/components/schemas/NeonatalCarePaymentTier"
          },
          "isMiscarriage": {
            "type": "boolean",
            "description": "Indicates whether the breavement leave is due to a miscarriage"
          },
          "documentCount": {
            "type": "integer",
            "description": "[readonly] The number of attachments associated with this model",
            "format": "int32"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] The attachments associated with this model",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent Leave, including Holiday and Statutory leave (such as Maternity Leave)"
      },
      "LeaveAssumedPensionablePay": {
        "type": "object",
        "properties": {
          "roleReference": {
            "type": "string",
            "description": "Employee role reference",
            "nullable": true
          },
          "roleId": {
            "type": "string",
            "description": "Employee role unique Id",
            "format": "uuid"
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Boolean flag indicates if the role is primary"
          },
          "assumedPensionablePay": {
            "type": "number",
            "description": "Assumed Pensionable Pay (APP) is an average figure, calculated as the average pay in the 3 months\r\n(or 12 weeks if weekly/fortnightly/fourweekly paid) before the absence",
            "format": "double",
            "nullable": true
          },
          "automaticAPPCalculation": {
            "type": "boolean",
            "description": "If set to True then we'll automatically calculate the AssumedPensionablePay. \r\nSet it to false if you want to manually provide a figure that overrides our calculations"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "LeaveCalculationType": {
        "enum": [
          "OneThreeSixtyFifthFTE",
          "OneThreeSixtyFifthProRata",
          "UsualProRata",
          "OneFifthOrWorkingPattern",
          "SpecifyHours"
        ],
        "type": "string"
      },
      "LeaveCustomPayment": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "format": "uuid"
          },
          "percentOfPay": {
            "type": "number",
            "description": "If this is Sick Leave with Custom Payment,\r\nthe user will input the desired impact on the employee’s pay, per role.\r\nThis will be via an amount between 0-100 in 'Pay for Absence'.\r\nThe employees pay will be fully reduced for the absence, and the % paid will be added back using the OSP pay code.",
            "format": "double"
          },
          "paySSPInAddition": {
            "type": "boolean",
            "description": "If this is Sick Leave with Custom Payment,\r\nIf true, then reduce the OSP by the amount of SSP paid (and apportioned according to role weighting)\r\nIf false, then do not reduce the OSP at all."
          }
        },
        "additionalProperties": false
      },
      "LeaveCustomProRataRule": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "format": "uuid"
          },
          "proRataMethod": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          }
        },
        "additionalProperties": false
      },
      "LeaveNotionalPayDetails": {
        "type": "object",
        "properties": {
          "leaveId": {
            "type": "string",
            "format": "uuid"
          },
          "notionalPayPeriodBreakdowns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotionalPayPeriodBreakdown"
            },
            "description": "Breakdown of notional pay details by percent of pay bands\r\nEvery leave has entries representing a continuous period of leave with the same percent of pay",
            "nullable": true
          },
          "payableOccupationalLeavesCount": {
            "type": "integer",
            "format": "int32"
          },
          "occupationalPay": {
            "type": "number",
            "format": "double"
          },
          "ospDaysToBeExcludedForNotionalPay": {
            "type": "number",
            "format": "double"
          },
          "occupationalPayWithLessThanHalfPay": {
            "type": "number",
            "format": "double"
          },
          "notionalPay": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "LeavePayType": {
        "enum": [
          "DoNotPay",
          "PayAsUsual",
          "StatutoryPay",
          "OccupationalPolicy",
          "Custom",
          "AverageDays"
        ],
        "type": "string"
      },
      "LeaveProRataRule": {
        "enum": [
          "WorkingPattern",
          "TwoSixtyDaysNotWorked",
          "TwoSixtyDaysWorked",
          "ThreeSixFiveDaysNotWorked",
          "ThreeSixFiveDaysWorked",
          "CalendarDays",
          "WorkingDays"
        ],
        "type": "string"
      },
      "LeaveSettings": {
        "type": "object",
        "properties": {
          "useDefaultHolidayType": {
            "type": "boolean",
            "description": "If true then the value for HolidayType comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowanceResetDate": {
            "type": "boolean",
            "description": "If true then the value for the AllowanceResetDate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAllowance": {
            "type": "boolean",
            "description": "If true then the value for the Allowance comes from the Employer record.\r\nThis property only appears if the LeaveSettings if a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieu": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuRate": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieuRate comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultHolidayAccrualBasis": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualBasis comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "If true then the value for AccruePaymentInLieu comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultAccrueHoursPerDay": {
            "type": "boolean",
            "description": "If true then the value for AccrueHoursPerDay comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "useDefaultMaximumAccruePeriod": {
            "type": "boolean",
            "description": "If true then the value for MaximumAccruePeriod comes from the Employer record.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)"
          },
          "allowanceResetDate": {
            "type": "string",
            "description": "The date that the holiday allowance resets. Only the day/month part of the value is relevant.",
            "format": "date"
          },
          "allowance": {
            "type": "number",
            "description": "The number of days holiday an employee can take per year if HolidayType is Days.\r\nOtherwise this is readonly and gives you the number of days accrued since the last reset",
            "format": "double"
          },
          "adjustment": {
            "type": "number",
            "description": "Adjustment to number of hours/days/weeks holiday this employee can take per year.\r\nWill reset to 0 when the Allowance resets.\r\nThis property only appears if the LeaveSettings is a child of an Employee (not of an Employer)",
            "format": "double",
            "nullable": true
          },
          "allowanceUsed": {
            "type": "number",
            "description": "[readonly] The number of days used from the allowance since last reset",
            "format": "double"
          },
          "allowanceUsedPreviousPeriod": {
            "type": "number",
            "description": "[readonly] The number of days used in the 12 months prior to the last reset",
            "format": "double"
          },
          "allowanceRemaining": {
            "type": "number",
            "description": "[readonly] The number of days remaining of the allowance until next reset",
            "format": "double",
            "readOnly": true
          },
          "holidayType": {
            "$ref": "#/components/schemas/HolidayType"
          },
          "accrueSetAmount": {
            "type": "boolean",
            "description": "If true and HolidayType is Accrual_Days then the AccruePaymentInLieuRate will be treated as the set amount to accrue per period worked."
          },
          "accrueHoursPerDay": {
            "type": "number",
            "description": "If HolidayType is Accrual_Days then this value is used to help convert hours worked into days accrued",
            "format": "double"
          },
          "showAllowanceOnPayslip": {
            "type": "boolean",
            "description": "If true then the remaining Allowance will be shown on the employees payslip."
          },
          "showAhpOnPayslip": {
            "type": "boolean",
            "description": "If true then the AHP balance will be shown on the employees payslip."
          },
          "accruePaymentInLieuRate": {
            "type": "number",
            "description": "The rate at which Payments in Lieu acrrue. Typically this should be 12.07%.",
            "format": "double"
          },
          "accruePaymentInLieuAllGrossPay": {
            "type": "boolean",
            "description": "Set to true if you want accrued holiday payments to be calculated on the total gross pay for the employee or just on the single regular pay element"
          },
          "accruePaymentInLieuPayAutomatically": {
            "type": "boolean",
            "description": "Set to true if you want employees to be automatically paid any outstanding holiday pay"
          },
          "accruePayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "maximumAccruePeriod": {
            "type": "number",
            "description": "The maximum number of hours capable of being accrued in a single period",
            "format": "double",
            "nullable": true
          },
          "holidayAccrualBasis": {
            "$ref": "#/components/schemas/HolidayAccrual"
          },
          "holidayAccrualDefaultRateType": {
            "$ref": "#/components/schemas/HolidayAccrualDefaultRateType"
          },
          "occupationalSicknessUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "accruedPaymentLiability": {
            "type": "number",
            "description": "[readonly] The total accrued payments for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedPaymentAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total accrued",
            "format": "double"
          },
          "accruedPaymentPaid": {
            "type": "number",
            "description": "[readonly] The Total amount paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedPaymentBalance": {
            "type": "number",
            "description": "[readonly] The balance of what is owed to this employee in lieu of holidays",
            "format": "double",
            "readOnly": true
          },
          "accruedHoursAmount": {
            "type": "number",
            "description": "[readonly] The total accrued hours for this employee over the lifetime of their employment so far",
            "format": "double"
          },
          "accruedHoursAdjustment": {
            "type": "number",
            "description": "Any manual adjustment to the total hours accrued",
            "format": "double"
          },
          "accruedHoursPaid": {
            "type": "number",
            "description": "[readonly] The Total amount of hours paid to this employee in lieu of holidays",
            "format": "double"
          },
          "accruedHoursAmountLastPeriod": {
            "type": "number",
            "description": "[readonly] The total accrued hours for this employee in the last pay period",
            "format": "double"
          },
          "paidHoursAmountLastPeriod": {
            "type": "number",
            "description": "[readonly] The number of hours paid against the pay code",
            "format": "double"
          },
          "accruedHoursBalance": {
            "type": "number",
            "description": "[readonly] The balance of hours owed to this employee in lieu of holidays",
            "format": "double",
            "readOnly": true
          },
          "holidayAccrualResetDate": {
            "type": "string",
            "description": "[readonly] This date is used to reset holiday accrual schemes (Accrual Money or Accrual Hours).",
            "format": "date",
            "nullable": true
          },
          "isEnhancedHolidayScheme": {
            "type": "boolean",
            "description": "If true then the employee is using an enhanced holiday scheme where allowance is split between enhanced and non-enhanced days."
          },
          "isOffsetBasicPay": {
            "type": "boolean",
            "description": "If true then basic pay should be offset when calculating enhanced holiday pay."
          },
          "enhancedDaysAllowance": {
            "type": "number",
            "description": "The number of enhanced holiday days.",
            "format": "double"
          },
          "averageDaysAllowance": {
            "type": "number",
            "description": "The number of non-enhanced holiday days.",
            "format": "double"
          },
          "enhancedDaysTaken": {
            "type": "number",
            "description": "[readonly] The number of enhanced days taken by the employee.",
            "format": "double"
          },
          "enhancedDaysAdjustment": {
            "type": "number",
            "description": "Manual adjustment to enhanced days entitlement.",
            "format": "double"
          },
          "enhancedDaysBalance": {
            "type": "number",
            "description": "[readonly] The balance of enhanced days available to the employee.",
            "format": "double",
            "readOnly": true
          },
          "averageDaysTaken": {
            "type": "number",
            "description": "[readonly] The number of average days taken by the employee.",
            "format": "double"
          },
          "averageDaysAdjustment": {
            "type": "number",
            "description": "Manual adjustment to average days entitlement.",
            "format": "double"
          },
          "averageDaysBalance": {
            "type": "number",
            "description": "[readonly] The balance of average days available to the employee.",
            "format": "double",
            "readOnly": true
          },
          "aggregatedServiceDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "useAggregatedServiceDate": {
            "type": "boolean"
          },
          "useDefaultHolidayAccrualDefaultRateType": {
            "type": "boolean",
            "description": "If true then the value for HolidayAccrualDefaultRateType comes from the Employer record."
          },
          "unauthorisedLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "holidayLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "sickLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "parentalLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          },
          "bereavementLeaveProRataRule": {
            "$ref": "#/components/schemas/LeaveProRataRule"
          }
        },
        "additionalProperties": false
      },
      "LeaveType": {
        "enum": [
          "Unauthorised",
          "Holiday",
          "Sick",
          "Maternity",
          "Paternity",
          "Adoption",
          "SharedParental",
          "Bereavement",
          "SharedParentalAdoption",
          "PaternityAdoption",
          "StrikeAction",
          "NeonatalCare",
          "BereavementNorthernIreland"
        ],
        "type": "string"
      },
      "LeaverDetails": {
        "type": "object",
        "properties": {
          "hasLeft": {
            "type": "boolean"
          },
          "leaveDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "isDeceased": {
            "type": "boolean"
          },
          "paymentAfterLeaving": {
            "type": "boolean"
          },
          "p45Sent": {
            "type": "boolean"
          },
          "payAccruedBalance": {
            "type": "boolean"
          },
          "paymentMethodAfterLeaving": {
            "$ref": "#/components/schemas/PaymentMethodAfterLeaving"
          }
        },
        "additionalProperties": false
      },
      "LgpsCivicaCasualHours": {
        "enum": [
          "ReportAsZero",
          "ReportAsOne",
          "ReportAsBlank"
        ],
        "type": "string"
      },
      "LgpsCivicaPayrollNumber": {
        "enum": [
          "PayrollCode",
          "RoleReference",
          "PayrollCodeAndRoleReference",
          "UUID",
          "PensionMembershipNoOrRoleReference",
          "PensionMembershipNoOrPayrollCodeAndRoleReference",
          "PensionMembershipNoOrUUID"
        ],
        "type": "string"
      },
      "LgpsFund": {
        "enum": [
          "Avon",
          "BarkingAndDagenham",
          "Barnet",
          "Bedfordshire",
          "Berkshire",
          "Bexley",
          "Brent",
          "Bromley",
          "Buckinghamshire",
          "Cambridgeshire",
          "Camden",
          "Cardiff",
          "Cheshire",
          "CityOfWestminster",
          "Clwyd",
          "Cornwall",
          "Croydon",
          "Cumbria",
          "Derbyshire",
          "Devon",
          "Dorset",
          "Durham",
          "Dyfed",
          "Ealing",
          "EastRiding",
          "EastSussex",
          "Enfield",
          "Essex",
          "Gloucestershire",
          "GreaterGwent",
          "GreaterManchester",
          "Greenwich",
          "Gwynedd",
          "Hackney",
          "HammersmithAndFulham",
          "Hampshire",
          "Haringey",
          "Harrow",
          "Havering",
          "Hertfordshire",
          "Hillingdon",
          "Hounslow",
          "IsleOfWight",
          "Islington",
          "KensingtonAndChelsea",
          "Kent",
          "KingstonUponThames",
          "Lambeth",
          "Lancashire",
          "Leicestershire",
          "Lewisham",
          "Lincolnshire",
          "LondonPensionsFundAuthority",
          "Merseyside",
          "Merton",
          "Newham",
          "Norfolk",
          "NorthYorkshire",
          "Northamptonshire",
          "Northumberland",
          "Nottinghamshire",
          "Oxfordshire",
          "Powys",
          "Redbridge",
          "RhonddaCynonTaf",
          "Shropshire",
          "Somerset",
          "SouthYorkshire",
          "Southwark",
          "Staffordshire",
          "Suffolk",
          "Surrey",
          "Sutton",
          "Swansea",
          "Teesside",
          "TowerHamlets",
          "TyneAndWear",
          "WalthamForest",
          "Wandsworth",
          "Warwickshire",
          "WestMidlandsPassengerTransport",
          "WestMidlands",
          "WestSussex",
          "WestYorkshire",
          "Wiltshire",
          "Worcestershire"
        ],
        "type": "string"
      },
      "LgpsIConnectFileType": {
        "enum": [
          "SingleFile",
          "MultipleProviderFile"
        ],
        "type": "string"
      },
      "LgpsIConnectPayrollReference": {
        "enum": [
          "Empty",
          "PayrollCode",
          "RoleReference",
          "PensionMemberNo",
          "Uuid",
          "PayrollCodeAndRoleReference",
          "EmployerCode",
          "CustomText",
          "PensionMemberNoOrRoleReference",
          "PensionMemberNoOrPayrollCodeAndRoleReference",
          "PensionMemberNoOrPensionUuid"
        ],
        "type": "string"
      },
      "LgpsIConnectSalaryType": {
        "enum": [
          "PayOnJoining",
          "AnnualPensionableSalary",
          "DoNotReport"
        ],
        "type": "string"
      },
      "LgpsPayCategory": {
        "enum": [
          "LgpsFinalPayPre2014"
        ],
        "type": "string"
      },
      "LinkedPiw": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/LinkedPiwResult"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The Id of the linked Leave",
            "format": "uuid"
          },
          "averageWeeklyEarnings": {
            "type": "number",
            "description": "[readonly] Average weekly earnings from linked Leave",
            "format": "double"
          },
          "workingDays": {
            "type": "number",
            "description": "[readonly] The number of working days in the linked Leave.",
            "format": "double"
          },
          "totalDays": {
            "type": "number",
            "description": "[readonly] The number of days covered by the linked Leave.",
            "format": "double"
          },
          "sspFirstPayDay": {
            "type": "string",
            "description": "[readonly] The SspFirstPayDay from the linked Leave, if set",
            "format": "date",
            "nullable": true
          },
          "sspFirstDay": {
            "type": "string",
            "description": "[readonly] The SspFirstDay from the linked Leave, if set",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Linked Period of Incapacity for Work.\r\nIf you record Sick Leave and select Statutory Pay then any other Sick Leave with Statutory Pay\r\nlasting 4 or more days in the previous 8 weeks will be linked to it"
      },
      "LinkedPiwResult": {
        "enum": [
          "Success",
          "NoLinkedLeave"
        ],
        "type": "string"
      },
      "Loan": {
        "type": "object",
        "properties": {
          "issueDate": {
            "type": "string",
            "description": "The date the Loan was made",
            "format": "date"
          },
          "reference": {
            "maxLength": 100,
            "type": "string",
            "description": "An optional reference for this Loan",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "description": "The Code of the PayCode used for recording payments.\r\nThe PayCode must have a CalculationType of FixedAmount and not be a multiplier code",
            "nullable": true
          },
          "loanAmount": {
            "type": "number",
            "description": "The initial amount that the loan was for",
            "format": "double"
          },
          "periodAmount": {
            "type": "number",
            "description": "The amount to deduct per PayPeriod",
            "format": "double"
          },
          "amountRepaid": {
            "type": "number",
            "description": "[readonly] The amount repaid so far due to deductions in Payruns",
            "format": "double"
          },
          "previouslyPaid": {
            "type": "number",
            "description": "[readonly] Any amount by which to adjust the Balance, perhaps due to repayments made elsewhere",
            "format": "double"
          },
          "balance": {
            "type": "number",
            "description": "[readonly] The Balance of the Loan",
            "format": "double",
            "readOnly": true
          },
          "isSettled": {
            "type": "boolean",
            "description": "[readonly]",
            "readOnly": true
          },
          "isPaused": {
            "type": "boolean",
            "description": "If set to true then deductions will not be made"
          },
          "documentCount": {
            "type": "integer",
            "description": "[readonly] The number of attachments associated with this model",
            "format": "int32"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] The attachments associated with this model",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent an Attachment of Earnings Order (AEO)"
      },
      "LoanBalancesReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoanBalancesReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "LoanBalancesReportLine": {
        "type": "object",
        "properties": {
          "employeeName": {
            "type": "string",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "issueDate": {
            "type": "string",
            "format": "date"
          },
          "reference": {
            "type": "string",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "nullable": true
          },
          "loanAmount": {
            "type": "number",
            "format": "double"
          },
          "paidAmount": {
            "type": "number",
            "format": "double"
          },
          "outstandingBalance": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "LoanBalancesReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/LoanBalancesReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "LoanCharge": {
        "type": "object",
        "properties": {
          "threshhold": {
            "type": "number",
            "format": "double"
          },
          "officialInterestRate": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate charges for a Loan.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "LogEntry": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LondonAllowance": {
        "required": [
          "paySpineId"
        ],
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/LondonAllowanceType"
          },
          "valueType": {
            "$ref": "#/components/schemas/LondonAllowanceValueType"
          },
          "value": {
            "type": "number",
            "description": "Value of London Allowance",
            "format": "double"
          },
          "paySpineId": {
            "type": "integer",
            "description": "foreign key with pay spine table",
            "format": "int32"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "LondonAllowanceType": {
        "enum": [
          "Inner",
          "Outer",
          "Fringe"
        ],
        "type": "string"
      },
      "LondonAllowanceValueType": {
        "enum": [
          "Graded",
          "Fixed"
        ],
        "type": "string"
      },
      "MailSettings": {
        "required": [
          "customiseHtmlEmailSettings",
          "customiseSmtpSettings",
          "senderEmail",
          "senderName"
        ],
        "type": "object",
        "properties": {
          "senderName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "senderEmail": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "useSystemFromAddress": {
            "type": "boolean",
            "description": "If set to true then the SenderEmail provided will only be used in the \r\nReplyTo fields. The system defaults will be used for the From address."
          },
          "senderEmailVerified": {
            "type": "boolean",
            "description": "[readonly] The SenderEmail must be verified before you can send email using that address"
          },
          "customiseSmtpSettings": {
            "type": "boolean"
          },
          "smtpSettings": {
            "$ref": "#/components/schemas/SmtpSettings"
          },
          "customiseHtmlEmailSettings": {
            "type": "boolean"
          },
          "htmlEmailSettings": {
            "$ref": "#/components/schemas/HtmlEmailSettings"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Determines the settings used when the Employer sends emails.\r\nIf CustomiseSmtpSettings is false then SmtpSettings will be null and our default internal settings will be used;"
      },
      "MaritalStatus": {
        "enum": [
          "Single",
          "Married",
          "Divorced",
          "Widowed",
          "CivilPartnership",
          "Unknown"
        ],
        "type": "string"
      },
      "McrPayCategory": {
        "enum": [
          "McrPensionablePay",
          "McrOvertime",
          "McrAdditionalPensionablePayments"
        ],
        "type": "string"
      },
      "MileageAllowancePaymentsRate": {
        "type": "object",
        "properties": {
          "vehicleType": {
            "$ref": "#/components/schemas/MileageVehicleType"
          },
          "rate": {
            "type": "number",
            "format": "double"
          },
          "threshold": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "aboveThresholdRate": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate Mileage Allowance Payments.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "MileageVehicleType": {
        "enum": [
          "Car",
          "Motorcycle",
          "Cycle"
        ],
        "type": "string"
      },
      "MonthlyMinimum": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "billPastEndDate": {
            "type": "boolean",
            "description": "If set to true then this user should still be billed even after the End Date"
          }
        },
        "additionalProperties": false
      },
      "NationalInsuranceCalculation": {
        "type": "object",
        "properties": {
          "breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NationalInsuranceCalculationBase"
            },
            "description": "[readonly] List of calculations that make up this calculation",
            "nullable": true
          },
          "niCategory": {
            "type": "string",
            "description": "Calculated on NI table letter"
          },
          "asDirector": {
            "type": "boolean",
            "description": "Calculated as a Director"
          },
          "earningsUptoIncludingLEL": {
            "type": "number",
            "description": "Earnings up to and including LEL",
            "format": "double"
          },
          "earningsAboveLELUptoIncludingPT": {
            "type": "number",
            "description": "Earnings above LEL up to PT",
            "format": "double"
          },
          "earningsAbovePTUptoIncludingST": {
            "type": "number",
            "description": "Earnings above PT up to ST",
            "format": "double"
          },
          "earningsAbovePTUptoIncludingUEL": {
            "type": "number",
            "description": "Earnings above PT up to UEL",
            "format": "double"
          },
          "earningsAboveSTUptoIncludingUEL": {
            "type": "number",
            "description": "Earnings above ST up to UEL",
            "format": "double"
          },
          "earningsAboveSTUptoIncludingFUST": {
            "type": "number",
            "description": "Earnings above ST up to FUST",
            "format": "double",
            "nullable": true
          },
          "earningsAboveFUSTUptoIncludingUEL": {
            "type": "number",
            "description": "Earnings above FUST up to UEL",
            "format": "double",
            "nullable": true
          },
          "earningsAboveUEL": {
            "type": "number",
            "description": "Earnings above UEL",
            "format": "double"
          },
          "employeeNiGross": {
            "type": "number",
            "description": "Employee National Insurance Gross Value",
            "format": "double"
          },
          "employeeNiRebate": {
            "type": "number",
            "description": "Employee National Insurance Rebate Value",
            "format": "double"
          },
          "employerNiGross": {
            "type": "number",
            "description": "Employer National Insurance Gross Value",
            "format": "double"
          },
          "employerNiRebate": {
            "type": "number",
            "description": "Employer National Insurance Rebate Value",
            "format": "double"
          },
          "employeeNi": {
            "type": "number",
            "description": "[readonly] Net Employee National Insurance",
            "format": "double",
            "readOnly": true
          },
          "employerNi": {
            "type": "number",
            "description": "[readonly] Net Employer National Insurance",
            "format": "double",
            "readOnly": true
          },
          "netNi": {
            "type": "number",
            "description": "[readonly] Net National Insurance (Employer + Employee)",
            "format": "double",
            "readOnly": true
          },
          "niablePay": {
            "type": "number",
            "description": "Niable pay value, required for payrun overrides",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Included as part of the PayRunEntry model to provide details of how the National Insurance Contribution was calculated.\r\nUnless the PayRunEntry.ManualNi property is set to true then these value will all be read-only and are recalculated everytime a payrun is updated.\r\nThis calculation could be made up of one or more calculations made on different NI table letters.\r\nWhere more than NI table letter affects the calculation, the calculation for each NI table letter will be contain in the Breakdown."
      },
      "NationalInsuranceCalculationBase": {
        "type": "object",
        "properties": {
          "niCategory": {
            "type": "string",
            "description": "Calculated on NI table letter"
          },
          "asDirector": {
            "type": "boolean",
            "description": "Calculated as a Director"
          },
          "earningsUptoIncludingLEL": {
            "type": "number",
            "description": "Earnings up to and including LEL",
            "format": "double"
          },
          "earningsAboveLELUptoIncludingPT": {
            "type": "number",
            "description": "Earnings above LEL up to PT",
            "format": "double"
          },
          "earningsAbovePTUptoIncludingST": {
            "type": "number",
            "description": "Earnings above PT up to ST",
            "format": "double"
          },
          "earningsAbovePTUptoIncludingUEL": {
            "type": "number",
            "description": "Earnings above PT up to UEL",
            "format": "double"
          },
          "earningsAboveSTUptoIncludingUEL": {
            "type": "number",
            "description": "Earnings above ST up to UEL",
            "format": "double"
          },
          "earningsAboveSTUptoIncludingFUST": {
            "type": "number",
            "description": "Earnings above ST up to FUST",
            "format": "double",
            "nullable": true
          },
          "earningsAboveFUSTUptoIncludingUEL": {
            "type": "number",
            "description": "Earnings above FUST up to UEL",
            "format": "double",
            "nullable": true
          },
          "earningsAboveUEL": {
            "type": "number",
            "description": "Earnings above UEL",
            "format": "double"
          },
          "employeeNiGross": {
            "type": "number",
            "description": "Employee National Insurance Gross Value",
            "format": "double"
          },
          "employeeNiRebate": {
            "type": "number",
            "description": "Employee National Insurance Rebate Value",
            "format": "double"
          },
          "employerNiGross": {
            "type": "number",
            "description": "Employer National Insurance Gross Value",
            "format": "double"
          },
          "employerNiRebate": {
            "type": "number",
            "description": "Employer National Insurance Rebate Value",
            "format": "double"
          },
          "employeeNi": {
            "type": "number",
            "description": "[readonly] Net Employee National Insurance",
            "format": "double",
            "readOnly": true
          },
          "employerNi": {
            "type": "number",
            "description": "[readonly] Net Employer National Insurance",
            "format": "double",
            "readOnly": true
          },
          "netNi": {
            "type": "number",
            "description": "[readonly] Net National Insurance (Employer + Employee)",
            "format": "double",
            "readOnly": true
          },
          "niablePay": {
            "type": "number",
            "description": "Niable pay value, required for payrun overrides",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Included as part of the PayRunEntry model to provide details of how the National Insurance Contribution was calculated.\r\nUnless the PayRunEntry.ManualNi property is set to true then these value will all be read-only and are recalculated everytime a payrun is updated.\r\nThis calculation could be made up of one or more calculations made on different NI table letters.\r\nWhere more than NI table letter affects the calculation, the calculation for each NI table letter will be contain in the Breakdown."
      },
      "NationalInsuranceCalculationPeriodValues": {
        "type": "object",
        "properties": {
          "lel": {
            "type": "number",
            "description": "[readonly] Lower Earnings Limit",
            "format": "double"
          },
          "pt": {
            "type": "number",
            "description": "[readonly] Primary Threshold",
            "format": "double"
          },
          "st": {
            "type": "number",
            "description": "[readonly] Secondary Threshold",
            "format": "double"
          },
          "fust": {
            "type": "number",
            "description": "[readonly] Freeports Upper Accrual Threshold",
            "format": "double"
          },
          "uap": {
            "type": "number",
            "description": "[readonly] Upper Accrual Point",
            "format": "double"
          },
          "ust": {
            "type": "number",
            "description": "[readonly] Upper Secondary Threshold (under 21)",
            "format": "double"
          },
          "aust": {
            "type": "number",
            "description": "[readonly] Apprentice Upper Secondary Threshold (apprentice under 25)",
            "format": "double"
          },
          "uel": {
            "type": "number",
            "description": "[readonly] Upper Earnings Limit",
            "format": "double"
          },
          "vust": {
            "type": "number",
            "description": "[readonly] Veterian Upper Secondary Threshold",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate National Insurance Contributions.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "NationalInsuranceCode": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "[readonly] NI Table Letter"
          },
          "description": {
            "type": "string",
            "description": "[readonly] Description of Employees that would use this NI Letter",
            "nullable": true
          },
          "eeB": {
            "type": "number",
            "description": "[readonly] Earnings at or above LEL up to and including PT (Employee Contribution)",
            "format": "double"
          },
          "eeC": {
            "type": "number",
            "description": "[readonly] Earnings above the PT up to and including UEL (Employee Contribution)",
            "format": "double"
          },
          "eeD": {
            "type": "number",
            "description": "[readonly] Balance of earnings above UEL (Employee Contribution)",
            "format": "double"
          },
          "eeE": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "eeF": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "erB": {
            "type": "number",
            "description": "[readonly] Earnings at or above LEL up to and including PT (Employer Contribution)",
            "format": "double"
          },
          "erC": {
            "type": "number",
            "description": "[readonly]  Earnings above the PT up to and including UEL (Employer Contribution)",
            "format": "double"
          },
          "erD": {
            "type": "number",
            "description": "[readonly] Balance of earnings above UEL (Employer Contribution)",
            "format": "double"
          },
          "erE": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "erF": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date when these period values are effective",
            "format": "date",
            "nullable": true
          },
          "midYearChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NationalInsuranceCode"
            },
            "description": "Any optional changes to the period values that are effective from a specified date in the middle of a tax year",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate National Insurance Contributions.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "NationalMinimumWage": {
        "type": "object",
        "properties": {
          "apprentice": {
            "type": "boolean",
            "nullable": true
          },
          "maxAge": {
            "type": "integer",
            "format": "int32"
          },
          "hourlyAmount": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate National Minimum Wage.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "NeonatalCarePaymentTier": {
        "enum": [
          "None",
          "FirstTier",
          "SecondTier"
        ],
        "type": "string"
      },
      "NiLetterError": {
        "enum": [
          "XNotUsedForPensionersPayroll",
          "BUsedForMale",
          "CUsedBeforeStatePensionAge",
          "AUsedForUnder21",
          "AUsedOverStatePensionAge",
          "HUsedForOver24",
          "MUsedForOver20",
          "ZUsedForOver20",
          "IUsedForMale",
          "FUsedForNonFreeportWorker",
          "IUsedForNonFreeportWorker",
          "LUsedForNonFreeportWorker",
          "SUsedForNonFreeportWorker",
          "VUsedForNonVeteran",
          "VUsedForVeteransFirstEmploymentDateOverOneYearOld",
          "FUsedForFreeportWorkerOverThreeYearsOld",
          "IUsedForFreeportWorkerOverThreeYearsOld",
          "LUsedForFreeportWorkerOverThreeYearsOld",
          "SUsedForFreeportWorkerOverThreeYearsOld",
          "XNotUsedForUnder16",
          "DUsedForNonInvestmentZoneWorker",
          "EUsedForNonInvestmentZoneWorker",
          "KUsedForNonInvestmentZoneWorker",
          "NUsedForNonInvestmentZoneWorker",
          "BEITAllowForDOBBefore5thApril1961"
        ],
        "type": "string"
      },
      "NiLetterValidationReport": {
        "type": "object",
        "properties": {
          "basedOnPayrun": {
            "type": "boolean",
            "description": "If false, then any payrun related information (Tax year, etc) should be ignored."
          },
          "errorLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NiLetterValidationReportLine"
            },
            "nullable": true,
            "readOnly": true
          },
          "paymentDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NiLetterValidationReportLine": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "string",
            "format": "uuid"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "niNumber": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date"
          },
          "niLetterError": {
            "$ref": "#/components/schemas/NiLetterError"
          },
          "errorDetails": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "niLetter": {
            "type": "string",
            "nullable": true
          },
          "suggestedLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NiLetterValidationReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/NiLetterValidationReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "NiYtdReport": {
        "type": "object",
        "properties": {
          "payrun": {
            "$ref": "#/components/schemas/PayRun"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeNiYtdValues"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NiYtdReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/NiYtdReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "NiYtdValue": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "broughtForward": {
            "type": "number",
            "format": "double"
          },
          "period": {
            "type": "number",
            "format": "double"
          },
          "value": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NicSummary": {
        "type": "object",
        "properties": {
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "paymentDate": {
            "type": "string",
            "format": "date"
          },
          "niTable": {
            "type": "string"
          },
          "asDirector": {
            "type": "boolean"
          },
          "grossEarningsForNics": {
            "type": "number",
            "format": "double"
          },
          "earningsAtLel": {
            "type": "number",
            "format": "double"
          },
          "earningsAboveLelToPt": {
            "type": "number",
            "format": "double"
          },
          "earningsAbovePtToSt": {
            "type": "number",
            "format": "double"
          },
          "earningsAbovePtToUap": {
            "type": "number",
            "format": "double"
          },
          "earningsAboveStToUel": {
            "type": "number",
            "format": "double"
          },
          "earningsAboveStToFust": {
            "type": "number",
            "format": "double"
          },
          "earningsAboveFustToUel": {
            "type": "number",
            "format": "double"
          },
          "earningsAboveUapToUel": {
            "type": "number",
            "format": "double"
          },
          "earningsAboveUel": {
            "type": "number",
            "format": "double"
          },
          "employeeNics": {
            "type": "number",
            "format": "double"
          },
          "employeeNiRebate": {
            "type": "number",
            "format": "double"
          },
          "employerNics": {
            "type": "number",
            "format": "double"
          },
          "employerNiRebate": {
            "type": "number",
            "format": "double"
          },
          "hasValues": {
            "type": "boolean",
            "readOnly": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "isNiYtdOverride": {
            "type": "boolean"
          },
          "payRunVersion": {
            "type": "integer",
            "description": "[readonly] The supplementary pay run version of this NicSummary.",
            "format": "int32"
          },
          "isLatestVersion": {
            "type": "boolean",
            "description": "[readonly] Indicates whether this is the latest version of the NicSummary."
          },
          "childId": {
            "type": "string",
            "description": "This is nothing but the UniqueId of the model.",
            "format": "uuid"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          }
        },
        "additionalProperties": false
      },
      "NominalCodeMapping": {
        "type": "object",
        "properties": {
          "nominalCode": {
            "maxLength": 500,
            "type": "string",
            "nullable": true
          },
          "nominalName": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "maxLength": 100,
            "type": "string",
            "description": "If you will be using the API to post journals to an ExternalDataProvider, then this is the Id of the nominal code in the external system.\r\nIf there's no mapping then this will have a value of \"0\"",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "nullable": true
          },
          "nominalMapping": {
            "maxLength": 500,
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Note": {
        "type": "object",
        "properties": {
          "noteDate": {
            "type": "string",
            "description": "The date of the note",
            "format": "date"
          },
          "noteText": {
            "type": "string",
            "description": "Note text",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "description": "[readonly] The email address of the user that create the Note",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "description": "[readonly] The email address of the user that last updated the Note",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/NoteType"
          },
          "documentCount": {
            "type": "integer",
            "description": "[readonly] The number of attachments associated with this model",
            "format": "int32"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] The attachments associated with this model",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent a Note for an Employee"
      },
      "NoteType": {
        "enum": [
          "General",
          "NewStarterStatement",
          "RtwProof",
          "P45"
        ],
        "type": "string"
      },
      "NotionalPayPeriodBreakdown": {
        "type": "object",
        "properties": {
          "leaveId": {
            "type": "string",
            "format": "uuid"
          },
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "percentOfPay": {
            "type": "number",
            "format": "double"
          },
          "notionalPay": {
            "type": "number",
            "format": "double"
          },
          "occupationalPayWithLessThanHalfPay": {
            "type": "number",
            "format": "double"
          },
          "daysExcluded": {
            "type": "integer",
            "format": "int32"
          },
          "percentOfPayBand": {
            "$ref": "#/components/schemas/PercentOfPayBand"
          }
        },
        "additionalProperties": false
      },
      "Nvr": {
        "type": "object",
        "properties": {
          "employees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "format": "int32"
          },
          "nvrRequest": {
            "$ref": "#/components/schemas/NvrRequest"
          },
          "iRmark": {
            "type": "string",
            "nullable": true
          },
          "xml": {
            "type": "string",
            "description": "This property will soon be removed and should not be used.\r\nThere is now a dedicated API endpoint for retrieving the XML for a submission.",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "employerReferences": {
            "$ref": "#/components/schemas/EmpRefs"
          },
          "govTalkSubmission": {
            "$ref": "#/components/schemas/GovTalkSubmission"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NvrEmployee": {
        "type": "object",
        "properties": {
          "employeeUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "item": {
            "$ref": "#/components/schemas/Item"
          },
          "employeeDetails": {
            "$ref": "#/components/schemas/NvrEmployeeDetails"
          },
          "employment": {
            "$ref": "#/components/schemas/NvrEmployment"
          }
        },
        "additionalProperties": false
      },
      "NvrEmployeeDetails": {
        "type": "object",
        "properties": {
          "nino": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "$ref": "#/components/schemas/RtiEmployeeName"
          },
          "address": {
            "$ref": "#/components/schemas/RtiEmployeeAddress"
          },
          "birthDate": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NvrEmployment": {
        "type": "object",
        "properties": {
          "payId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NvrRequest": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NvrEmployee"
            },
            "nullable": true
          },
          "relatedTaxYear": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OccupationalPolicy": {
        "required": [
          "entitlement",
          "policyName",
          "sicknessYear",
          "type"
        ],
        "type": "object",
        "properties": {
          "policyName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The unique policy name"
          },
          "type": {
            "$ref": "#/components/schemas/OccupationalPolicyType"
          },
          "entitlement": {
            "$ref": "#/components/schemas/OccupationalPolicyEntitlement"
          },
          "sicknessYear": {
            "$ref": "#/components/schemas/OccupationalPolicySicknessYear"
          },
          "policyStartMonth": {
            "$ref": "#/components/schemas/CalendarMonth"
          },
          "serviceBands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceBand"
            },
            "description": "Service Bands Json",
            "nullable": true
          },
          "payCalculatedOn": {
            "$ref": "#/components/schemas/OccupationalPolicyPayCalculatedOn"
          },
          "payCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "useAggregatedServiceDate": {
            "type": "boolean"
          },
          "daysOrWeeksBeforeRecalculatingEntitlement": {
            "type": "integer",
            "description": "How many days or weeks an employee needs to return to work before new entitlements are used in calculations",
            "format": "int32"
          },
          "entitlementRecalculationBasis": {
            "$ref": "#/components/schemas/OccupationalPolicyEntitlementRecalculationBasis"
          },
          "ignorePreviousYearsSickness": {
            "type": "boolean",
            "description": "Defines whether any sickness that relates to a previous year's sickness entitlement should be included in the entitlement calculation,\r\nor whether only sickness that is relevant to the current year's entitlement is taken into consideration"
          }
        },
        "additionalProperties": false
      },
      "OccupationalPolicyEntitlement": {
        "enum": [
          "Days",
          "Weeks"
        ],
        "type": "string"
      },
      "OccupationalPolicyEntitlementRecalculationBasis": {
        "enum": [
          "ServiceBanding",
          "SickYear"
        ],
        "type": "string"
      },
      "OccupationalPolicyPayCalculatedOn": {
        "enum": [
          "NotApplicable",
          "PercentageOfAnnualSalary",
          "PercentageOfAverageWeeklyEarnings",
          "PercentageOfPayCodeSet",
          "Custom"
        ],
        "type": "string"
      },
      "OccupationalPolicySicknessYear": {
        "enum": [
          "NotApplicable",
          "Rolling",
          "Fixed"
        ],
        "type": "string"
      },
      "OccupationalPolicyType": {
        "enum": [
          "Sickness",
          "Maternity"
        ],
        "type": "string"
      },
      "OccupationalSickLeaveHistory": {
        "required": [
          "leaveDate",
          "payPercent",
          "serviceBandFrom",
          "serviceBandTo"
        ],
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date"
          },
          "payPercent": {
            "type": "number",
            "format": "double"
          },
          "serviceBandFrom": {
            "type": "integer",
            "format": "int32"
          },
          "serviceBandTo": {
            "type": "integer",
            "format": "int32"
          },
          "payRunId": {
            "type": "integer",
            "format": "int32"
          },
          "roleReference": {
            "type": "string",
            "nullable": true
          },
          "occupationalPolicy": {
            "type": "string",
            "nullable": true
          },
          "isReversed": {
            "type": "boolean",
            "description": "[readonly] Is set to true if this has been reversed in a Leave"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "OpeningBalances": {
        "type": "object",
        "properties": {
          "notNewStarter": {
            "type": "boolean"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "previousEmployerGross": {
            "type": "number",
            "format": "double"
          },
          "previousEmployerTax": {
            "type": "number",
            "format": "double"
          },
          "currentEmployerGross": {
            "type": "number",
            "format": "double"
          },
          "currentEmployerTax": {
            "type": "number",
            "format": "double"
          },
          "currentEmployerNet": {
            "type": "number",
            "format": "double"
          },
          "studentLoanDeductions": {
            "type": "number",
            "format": "double"
          },
          "postgradLoanDeductions": {
            "type": "number",
            "format": "double"
          },
          "empeePenContribnsPaid": {
            "type": "number",
            "format": "double"
          },
          "empeePenContribnsNotPaid": {
            "type": "number",
            "format": "double"
          },
          "smp": {
            "type": "number",
            "format": "double"
          },
          "spp": {
            "type": "number",
            "format": "double"
          },
          "sap": {
            "type": "number",
            "format": "double"
          },
          "shpp": {
            "type": "number",
            "format": "double"
          },
          "spbp": {
            "type": "number",
            "format": "double"
          },
          "spbpNorthernIreland": {
            "type": "number",
            "format": "double"
          },
          "sncp": {
            "type": "number",
            "format": "double"
          },
          "realTimeClass1ANi": {
            "type": "number",
            "format": "double"
          },
          "terminationPayments": {
            "type": "number",
            "format": "double"
          },
          "mapsMiles": {
            "type": "integer",
            "format": "int32"
          },
          "benefitsTaxedViaPayroll": {
            "type": "number",
            "format": "double"
          },
          "nicSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NicSummary"
            },
            "nullable": true
          },
          "foreignTaxCredit": {
            "type": "number",
            "format": "double"
          },
          "foreignTaxCreditReclaimed": {
            "type": "number",
            "format": "double"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          }
        },
        "additionalProperties": false
      },
      "OpeningBalancesTotals": {
        "type": "object",
        "properties": {
          "employeesWithOpeningBalancesCount": {
            "type": "integer",
            "format": "int32"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "previousEmployerGross": {
            "type": "number",
            "format": "double"
          },
          "previousEmployerTax": {
            "type": "number",
            "format": "double"
          },
          "currentEmployerGross": {
            "type": "number",
            "format": "double"
          },
          "currentEmployerTax": {
            "type": "number",
            "format": "double"
          },
          "currentEmployerNet": {
            "type": "number",
            "format": "double"
          },
          "studentLoanDeductions": {
            "type": "number",
            "format": "double"
          },
          "postgradLoanDeductions": {
            "type": "number",
            "format": "double"
          },
          "empeePenContribnsPaid": {
            "type": "number",
            "format": "double"
          },
          "empeePenContribnsNotPaid": {
            "type": "number",
            "format": "double"
          },
          "smp": {
            "type": "number",
            "format": "double"
          },
          "spp": {
            "type": "number",
            "format": "double"
          },
          "sap": {
            "type": "number",
            "format": "double"
          },
          "shpp": {
            "type": "number",
            "format": "double"
          },
          "spbp": {
            "type": "number",
            "format": "double"
          },
          "spbpNorthernIreland": {
            "type": "number",
            "format": "double"
          },
          "sncp": {
            "type": "number",
            "format": "double"
          },
          "realTimeClass1ANi": {
            "type": "number",
            "format": "double"
          },
          "terminationPayments": {
            "type": "number",
            "format": "double"
          },
          "mapsMiles": {
            "type": "integer",
            "format": "int32"
          },
          "benefitsTaxedViaPayroll": {
            "type": "number",
            "format": "double"
          },
          "nicSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NicSummary"
            },
            "nullable": true
          },
          "foreignTaxCredit": {
            "type": "number",
            "format": "double"
          },
          "foreignTaxCreditReclaimed": {
            "type": "number",
            "format": "double"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          }
        },
        "additionalProperties": false
      },
      "OverseasEmployerDetails": {
        "type": "object",
        "properties": {
          "overseasEmployer": {
            "type": "boolean"
          },
          "overseasSecondmentStatus": {
            "$ref": "#/components/schemas/OverseasSecondmentStatus"
          },
          "eeaCitizen": {
            "type": "boolean"
          },
          "epm6Scheme": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "OverseasSecondmentStatus": {
        "enum": [
          "None",
          "MoreThan183Days",
          "LessThan183Days",
          "BothInAndOutOfUK"
        ],
        "type": "string"
      },
      "P11": {
        "type": "object",
        "properties": {
          "employerName": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "employerOfficeNo": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "employerPayeRef": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "firstname": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "niNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "taxCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "joinDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "leaveDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11Line"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "A P11 Report summarises payments and deductions made to an employee.\r\nOur Reports API can return this to you in many formats including as a PDF file\r\nIf you request is as a JSOn object then it is represented using this model."
      },
      "P11DAssetAvailable": {
        "type": "object",
        "properties": {
          "desc": {
            "type": "string",
            "nullable": true
          },
          "other": {
            "type": "string",
            "nullable": true
          },
          "annValProRata": {
            "type": "string",
            "nullable": true
          },
          "grossOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "costOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "madeGood": {
            "type": "string",
            "nullable": true
          },
          "cashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DAssetAvailableCollection": {
        "type": "object",
        "properties": {
          "asset": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DAssetAvailable"
            },
            "nullable": true
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DAssetTransferredCollection": {
        "type": "object",
        "properties": {
          "asset": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DDescOther"
            },
            "nullable": true
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DCar": {
        "type": "object",
        "properties": {
          "make": {
            "type": "string",
            "nullable": true
          },
          "registered": {
            "type": "string",
            "nullable": true
          },
          "availFrom": {
            "type": "string",
            "nullable": true
          },
          "availTo": {
            "type": "string",
            "nullable": true
          },
          "cc": {
            "type": "string",
            "nullable": true
          },
          "fuel": {
            "type": "string",
            "nullable": true
          },
          "cO2": {
            "type": "string",
            "nullable": true
          },
          "zeroEmissionMileage": {
            "type": "string",
            "nullable": true
          },
          "noAppCO2Fig": {
            "type": "string",
            "nullable": true
          },
          "list": {
            "type": "string",
            "nullable": true
          },
          "accs": {
            "type": "string",
            "nullable": true
          },
          "capCont": {
            "type": "string",
            "nullable": true
          },
          "privUsePmt": {
            "type": "string",
            "nullable": true
          },
          "fuelWithdrawn": {
            "$ref": "#/components/schemas/P11dCarFreeFuelWithdrawn"
          },
          "cashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          },
          "fuelCashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DCarCollection": {
        "type": "object",
        "properties": {
          "car": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DCar"
            },
            "nullable": true
          },
          "totalCarsOrRelevantAmt": {
            "type": "string",
            "nullable": true
          },
          "totalFuelOrRelevantAmt": {
            "type": "string",
            "nullable": true
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DDescOther": {
        "type": "object",
        "properties": {
          "desc": {
            "type": "string",
            "nullable": true
          },
          "other": {
            "type": "string",
            "nullable": true
          },
          "annValProRata": {
            "type": "string",
            "nullable": true
          },
          "grossOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "costOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "madeGood": {
            "type": "string",
            "nullable": true
          },
          "cashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DLoan": {
        "type": "object",
        "properties": {
          "joint": {
            "type": "string",
            "nullable": true
          },
          "initOS": {
            "type": "string",
            "nullable": true
          },
          "finalOS": {
            "type": "string",
            "nullable": true
          },
          "maxOS": {
            "type": "string",
            "nullable": true
          },
          "intPaid": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "nullable": true
          },
          "discharge": {
            "type": "string",
            "nullable": true
          },
          "cashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DLoanCollection": {
        "type": "object",
        "properties": {
          "loan": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DLoan"
            },
            "nullable": true
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DOther": {
        "type": "object",
        "properties": {
          "class1A": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DDescOther"
            },
            "nullable": true
          },
          "nonClass1A": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DDescOther"
            },
            "nullable": true
          },
          "taxPaid": {
            "type": "string",
            "nullable": true
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DPaymentCollection": {
        "type": "object",
        "properties": {
          "payment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DDescOther"
            },
            "nullable": true
          },
          "tax": {
            "type": "string",
            "nullable": true
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11DSingleItem": {
        "type": "object",
        "properties": {
          "typeLetter": {
            "type": "string",
            "nullable": true
          },
          "taxablePmt": {
            "type": "string",
            "nullable": true
          },
          "excess": {
            "type": "string",
            "nullable": true
          },
          "taxablePmtOrRelevantAmt": {
            "type": "string",
            "nullable": true
          },
          "tradingOrgInd": {
            "type": "string",
            "nullable": true
          },
          "desc": {
            "type": "string",
            "nullable": true
          },
          "other": {
            "type": "string",
            "nullable": true
          },
          "annValProRata": {
            "type": "string",
            "nullable": true
          },
          "grossOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "costOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "madeGood": {
            "type": "string",
            "nullable": true
          },
          "cashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11Detailed": {
        "type": "object",
        "properties": {
          "employerName": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "employerOfficeNo": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "employerPayeRef": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "firstname": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "middlename": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "niNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "taxCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "joinDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "leaveDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "isDirector": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "niAndStatPaymentsLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11NiAndStatPaymentsLine"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "totalsLine": {
            "$ref": "#/components/schemas/P11NiAndStatPaymentsTotalsLine"
          },
          "niSummary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11DetailedNiValues"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "payeLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11PayeLine"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "payeTotalsLine": {
            "$ref": "#/components/schemas/P11PayeTotalsLine"
          },
          "payeSummary": {
            "$ref": "#/components/schemas/P11PayeSummary"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "A more comprehensive P11 Report.\r\nOur Reports API can return this to you in several formats including as a PDF file\r\nIf you request a JSON object then it is represented using this model."
      },
      "P11DetailedNiValues": {
        "type": "object",
        "properties": {
          "table": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "earningsAtLel": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "earningsAboveLelToPt": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "earningsAbovePtToUap": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "earningsAboveUapToUel": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "earningsAbovePtToUel": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employeeNics": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employerNics": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employeeAndEmployerNics": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Forms the NI Summary table in the P11 Detailed report."
      },
      "P11DetailedReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/P11Detailed"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "P11Line": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "period": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "grossTaxablePay": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "grossTaxablePayYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "taxYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "smpYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "sppYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "sapYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "shppYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "spbpYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "sncpYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "studentLoanYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "postgradLoanYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "niValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/P11NiValues"
            },
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Lines for the P11 Report"
      },
      "P11NiAndStatPaymentsLine": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "period": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "monthNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "weekNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "smp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "spp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "sap": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "shpp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "ssp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "spbp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "spbpNorthernIreland": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "sncp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "class1a": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "niValues": {
            "$ref": "#/components/schemas/P11DetailedNiValues"
          },
          "taxCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Lines for the NI Contributions and Statutory Payments table in the P11 Detailed Report"
      },
      "P11NiAndStatPaymentsTotalsLine": {
        "type": "object",
        "properties": {
          "toLel": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "lelToPt": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "ptToUel": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "eesAndErs": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "ees": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "class1A": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "ssp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "smp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "spp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "shpp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "sap": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "spbp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "spbpNorthernIreland": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "sncp": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Summary line for the NI Contributions and Statutory Payments table in the P11 Detailed report"
      },
      "P11NiValues": {
        "type": "object",
        "properties": {
          "table": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "period": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "ytd": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Forms a part of the P11 report."
      },
      "P11PayeLine": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "period": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "monthNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "weekNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "grossTaxablePay": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "grossTaxablePayYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "taxYTD": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "studentLoan": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "postgradLoan": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "taxCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Lines for the Paye Income Tax table in the P11 Detailed report"
      },
      "P11PayeSummary": {
        "type": "object",
        "properties": {
          "previousEmploymentPay": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "previousEmploymentTax": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "thisEmploymentPay": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "thisEmploymentTax": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "totalPayForYear": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "totalTaxForYear": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Forms the PAYE summary in the P11 Detailed report"
      },
      "P11PayeTotalsLine": {
        "type": "object",
        "properties": {
          "studentLoan": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "postgradLoan": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "pay": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "totalPayToDate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "taxDueToDate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "taxDue": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Summary line for the Paye Income Tax table in the P11 Detailed report"
      },
      "P11ReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/P11"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "P11dCarFreeFuelWithdrawn": {
        "type": "object",
        "properties": {
          "reinstated": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11dExpenses": {
        "type": "object",
        "properties": {
          "travAndSub": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "ent": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "homeTel": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "nonQualRel": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "other": {
            "$ref": "#/components/schemas/P11DSingleItem"
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P11dVans": {
        "type": "object",
        "properties": {
          "fuelCashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          },
          "typeLetter": {
            "type": "string",
            "nullable": true
          },
          "taxablePmt": {
            "type": "string",
            "nullable": true
          },
          "excess": {
            "type": "string",
            "nullable": true
          },
          "taxablePmtOrRelevantAmt": {
            "type": "string",
            "nullable": true
          },
          "tradingOrgInd": {
            "type": "string",
            "nullable": true
          },
          "desc": {
            "type": "string",
            "nullable": true
          },
          "other": {
            "type": "string",
            "nullable": true
          },
          "annValProRata": {
            "type": "string",
            "nullable": true
          },
          "grossOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "costOrAmtForgone": {
            "type": "string",
            "nullable": true
          },
          "madeGood": {
            "type": "string",
            "nullable": true
          },
          "cashEquivOrRelevantAmt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "P32": {
        "type": "object",
        "properties": {
          "isQuarterly": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "hmrcLiabilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HmrcLiability"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "employerOpeningBalances": {
            "$ref": "#/components/schemas/EmployerOpeningBalances"
          },
          "openingBalancesTotals": {
            "$ref": "#/components/schemas/OpeningBalancesTotals"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "P32ReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/P32"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PapdisDocument": {
        "type": "object",
        "properties": {
          "messageFunctionCode": {
            "$ref": "#/components/schemas/PapdisMessageFunctionCode"
          },
          "version": {
            "$ref": "#/components/schemas/PapdisVersion"
          },
          "messageFunctionCodeInt": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "pensionProvider": {
            "$ref": "#/components/schemas/PapdisPensionProvider"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "PAPDIS stands for 'Payroll and Pension Data Interface Standard'.\r\nIt is an industry standard for exchanging data between payroll software and pension providers.\r\nOur system provides an export of data in this standard and these models are used to represent the data.\r\nWhilst the relevant reporting API endpoint can provide this data as a JSON entity, it is usually represented in CSV or XML format which our API also provides."
      },
      "PapdisDocumentReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PapdisDocument"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PapdisEmployee": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "employeeId": {
            "type": "string",
            "description": "[readonly]",
            "format": "uuid"
          },
          "name": {
            "$ref": "#/components/schemas/PapdisEmployeeName"
          },
          "identity": {
            "$ref": "#/components/schemas/PapdisEmployeeIdentity"
          },
          "contact": {
            "$ref": "#/components/schemas/PapdisEmployeeContact"
          },
          "pay": {
            "$ref": "#/components/schemas/PapdisEmployeePay"
          },
          "assessment": {
            "$ref": "#/components/schemas/PapdisEmployeeAssessment"
          },
          "contribution": {
            "$ref": "#/components/schemas/PapdisEmployeeContribution"
          },
          "exit": {
            "$ref": "#/components/schemas/PapdisEmployeeExit"
          },
          "payrollCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "aeStateDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "leaveDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "statePensionAge": {
            "type": "integer",
            "format": "int32"
          },
          "contractualJoinerIndicator": {
            "type": "boolean"
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "pensionMemberReference": {
            "type": "string",
            "nullable": true
          },
          "pensionUniqueId": {
            "type": "string",
            "nullable": true
          },
          "employeeRoleUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "lastPaymentDate": {
            "type": "string",
            "description": "The last time the employee was paid",
            "format": "date",
            "nullable": true
          },
          "hasPrevioulyLeftPension": {
            "type": "boolean",
            "description": "Flag indicating the employee has previously left the pension"
          },
          "pensionablePayDefinition": {
            "$ref": "#/components/schemas/PensionablePayDefinition"
          },
          "isPreviousTaxYearRefund": {
            "type": "boolean",
            "description": "Indicates whether the employee has a pension refund from the previous tax year."
          },
          "totalPreviousTaxYearRefundEmployeeAmount": {
            "type": "number",
            "description": "The total amount of pension refunds paid to the employee,\r\ncalculated as the sum of all EmployeeRefund values from applicable PensionRefunds (when IsPreviousTaxYearRefund is enabled).",
            "format": "double"
          },
          "totalPreviousTaxYearRefundEmployeeAvcAmount": {
            "type": "number",
            "description": "The total amount of AVC (Additional Voluntary Contributions) refunds paid to the employee,\r\ncalculated as the sum of all AdditionalVoluntaryContribution values from applicable PensionRefunds (when IsPreviousTaxYearRefund is enabled).",
            "format": "double"
          },
          "totalPreviousTaxYearRefundEmployerAmount": {
            "type": "number",
            "description": "The total amount of employer pension refunds,\r\ncalculated as the sum of all EmployerRefund values from applicable PensionRefunds (when IsPreviousTaxYearRefund is enabled).",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeeAssessment": {
        "type": "object",
        "properties": {
          "assessmentCode": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "eventCode": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "eventDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "statutoryLetterCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "isIndividualAlreadyMemberOfQPS": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "deferralDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "enrolmentCommunicationsIssuedDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "workerExclusionCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "reenrolmentIndicator": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "optOutWindowEndDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "pensionJoinReason": {
            "$ref": "#/components/schemas/PensionJoinReason"
          },
          "pensionStartDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeeContact": {
        "type": "object",
        "properties": {
          "postalAddress": {
            "$ref": "#/components/schemas/PapdisEmployeeContactPostalAddress"
          },
          "emailAddress": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "secondaryEmailAddress": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "mobile": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeeContactPostalAddress": {
        "type": "object",
        "properties": {
          "address1": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "address2": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "address3": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "address4": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeeContribution": {
        "type": "object",
        "properties": {
          "employerContributionsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employerContributionsPercent": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employeeContributionsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employeeContributionsPercent": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "additionalVoluntaryContributionsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "additionalVoluntaryContributionsPercent": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "salarySacrificeIndicator": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "contributionStartDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "employeeContributionIsPercentage": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "employerContributionIsPercentage": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "unadjustedEmployeeContributionsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "unadjustedEmployerContributionsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "unadjustedAdditionalVoluntaryContributionsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employerContributionNiSavings": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "contributionLevelType": {
            "$ref": "#/components/schemas/PensionContributionLevelType"
          },
          "isAvcOnly": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "employerContributionIncludesNiSaving": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "unadjustedAdditionalVoluntaryContributionsPercent": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "isHalfContributionMember": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "assumedPensionablePay": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "nullable": true
          },
          "isPensionRefund": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "lowerLimit": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "isPensionAvcPayLine": {
            "type": "boolean",
            "description": "Indicates whether the pay run entry includes a pension AVC pay line."
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeeExit": {
        "type": "object",
        "properties": {
          "exitDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "exitReasonCode": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32",
            "nullable": true
          },
          "aeOptOutDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "aeOptOutReference": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "reasonForLeaving": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeeIdentity": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "birthDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "gender": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "nationalInsuranceNumber": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "employmentStartDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "maritalStatus": {
            "$ref": "#/components/schemas/MaritalStatus"
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeeName": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "forename1": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "forename2": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployeePay": {
        "type": "object",
        "properties": {
          "pensionableEarningsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "totalGrossQualifyingEarningsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "annualSalary": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "annualPensionableEarningsAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "payAmountMultiplier": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployer": {
        "type": "object",
        "properties": {
          "pensionRule": {
            "$ref": "#/components/schemas/PensionRule"
          },
          "employerId": {
            "type": "string",
            "description": "[readonly] Taken from the papdisEmployerId property of the PensionProvider",
            "nullable": true
          },
          "group": {
            "type": "string",
            "description": "[readonly] Taken from the papdisGroup property of the WorkerGroup",
            "nullable": true
          },
          "subGroup": {
            "type": "string",
            "description": "[readonly] Taken from the papdisSubGroup property of the WorkerGroup",
            "nullable": true
          },
          "payrollPeriod": {
            "$ref": "#/components/schemas/PapdisPayrollPeriod"
          },
          "stagingDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "cyclicalReenrolmentDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "postalAddress": {
            "$ref": "#/components/schemas/PapdisEmployerContactPostalAddress"
          },
          "fullTimeContractedHours": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "nullable": true
          },
          "fullTimeContractedWeeks": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "nullable": true
          },
          "contractedWeeks": {
            "type": "number",
            "description": "[readonly]",
            "format": "double",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PapdisEmployerContactPostalAddress": {
        "type": "object",
        "properties": {
          "address1": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "address2": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "address3": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "address4": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisMessageFunctionCode": {
        "enum": [
          "Enrol",
          "InfoOnly",
          "AssessmentRequest",
          "AssessmentResponse",
          "WokerInstruction"
        ],
        "type": "string"
      },
      "PapdisPayrollPeriod": {
        "type": "object",
        "properties": {
          "payPeriodStartDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "payPeriodEndDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "contributionDeductionDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "frequencyCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "taxPeriod": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "payReferenceStartDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "payReferenceEndDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "employees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PapdisEmployee"
            },
            "description": "[readonly] Employees and contributions made in this period",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisPensionProvider": {
        "type": "object",
        "properties": {
          "pensionProviderId": {
            "type": "string",
            "description": "[readonly] Taken from the papdisProviderId property of the PensionProvider",
            "nullable": true
          },
          "employers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PapdisEmployer"
            },
            "nullable": true
          },
          "accountNo": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PapdisVersion": {
        "enum": [
          "PAP10",
          "PAP11"
        ],
        "type": "string"
      },
      "PartnerDetails": {
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "initials": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "niNumber": {
            "maxLength": 15,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayBasis": {
        "enum": [
          "Hourly",
          "Daily",
          "Monthly"
        ],
        "type": "string"
      },
      "PayCode": {
        "required": [
          "code",
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "defaultValue": {
            "type": "number",
            "description": "If a non-zero value is provided then when this code is selected in our UI the value will be automatically filled.",
            "format": "double",
            "nullable": true
          },
          "isDeduction": {
            "type": "boolean",
            "description": "If set to true then a PayLine using this code will be treated as a deduction as opposed to an addition."
          },
          "isNiable": {
            "type": "boolean",
            "description": "Determines whether or not the value of PayLines using this code should be taken into consideration when calculating National Insurance Contributions."
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Determines whether or not the value of PayLines using this code should be taken into consideration when calculating the PAYE liability."
          },
          "isPensionable": {
            "type": "boolean",
            "description": "Determines whether or not the value of PayLines using this code should be taken into consideration when calculating the total pensionable pay."
          },
          "isAttachable": {
            "type": "boolean",
            "description": "Determines whether or not the value of PayLines using this code should be taken into consideration when calculating the attachable pay for AttachmentOrders."
          },
          "isRealTimeClass1aNiable": {
            "type": "boolean",
            "description": "Determines whether or not the value of PayLines using this code are subject to real time Class 1A NIC."
          },
          "isNotContributingToHolidayPay": {
            "type": "boolean",
            "description": "If true then any payments made using this code will not contribute towards holiday pay calculations."
          },
          "isQualifyingEarningsForAe": {
            "type": "boolean",
            "description": "If true then any payments made using this code will be used as the basis for calculating QualifyingEarnings for AutoEnrolment assessments.\r\nIf it is set to null then when it's next retrieved it'll have the same value as PensionablePay",
            "nullable": true
          },
          "isNotTierable": {
            "type": "boolean",
            "description": "If true then any payments made using this code will not be included when calculating the tier an employee should be on for a Tiered Pension."
          },
          "isTcp_Tcls": {
            "type": "boolean",
            "description": "If true then any payments made using this code will be reported as\r\na Trivial Commutation Payment (A - TCLS)"
          },
          "isTcp_Pp": {
            "type": "boolean",
            "description": "If true then any payments made using this code will be reported as\r\na Trivial Commutation Payment (B - Personal Pension)"
          },
          "isTcp_Op": {
            "type": "boolean",
            "description": "If true then any payments made using this code will be reported as\r\na Trivial Commutation Payment (C - Occupational Pension)"
          },
          "flexibleDrawdown": {
            "$ref": "#/components/schemas/FlexibleDrawdown"
          },
          "isAutoAdjust": {
            "type": "boolean",
            "description": "Can be used to inform a User to what default value to set for PayLine.autoAdjustForLeave for new lines created."
          },
          "calculationType": {
            "$ref": "#/components/schemas/PayCodeCalculationType"
          },
          "multiplierType": {
            "$ref": "#/components/schemas/PayCodeMultiplierType"
          },
          "dailyRateMultiplier": {
            "type": "number",
            "description": "If the MultiplierType is MultipleOfDailyRate then this sets the multiple to be used, ie 1.5",
            "format": "double"
          },
          "hourlyRateMultiplier": {
            "type": "number",
            "description": "If the MultiplierType is MultipleOfHourlyRate then this sets the multiple to be used, ie 1.5",
            "format": "double"
          },
          "isSystemCode": {
            "type": "boolean",
            "description": "[readonly] System Codes cannot be deleted or edited"
          },
          "isControlCode": {
            "type": "boolean",
            "description": "[readonly] Control Codes cannot be deleted or edited nor can PayLines be assigned to them."
          },
          "isNotional": {
            "type": "boolean",
            "description": "Determines whether the transaction involves non-monetary benefits for payroll processing, potentially subject to tax and National Insurance."
          },
          "isStandAloneLumpSum": {
            "type": "boolean",
            "description": "If true then any payments made using this code will be reported as\r\na Lump Sums (A - SALS)"
          },
          "isPensionExcessLumpSum": {
            "type": "boolean",
            "description": "If true then any payments made using this code will be reported as\r\na Lump Sums (B - PCELS)"
          },
          "payee": {
            "type": "string",
            "description": "The Id of the Payee, if any, that deductions are to be paid to.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Each PayLine has a Code. The Code will match the Code property of a PayCode.\r\nThe PayCode that is used determines how the amount is treated with regards to tax, NI and pensions"
      },
      "PayCodeCalculationType": {
        "enum": [
          "FixedAmount",
          "PercentageOfGross",
          "PercentageOfNet",
          "MultipleOfHourlyRate",
          "MultipleOfDailyRate",
          "FixedAnnualAmount"
        ],
        "type": "string"
      },
      "PayCodeMultiplierType": {
        "enum": [
          "None",
          "Hours",
          "Days"
        ],
        "type": "string"
      },
      "PayCodeSet": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "The name of this PayCodeSet"
          },
          "payCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The Code of any PayCodes included in this PayCodeSet",
            "nullable": true
          },
          "useForMcr": {
            "type": "boolean"
          },
          "mcrPayCategory": {
            "$ref": "#/components/schemas/McrPayCategory"
          },
          "useForLgps": {
            "type": "boolean",
            "description": "Flag indicating if this PayCodeSet will be used for LGPS pay categorisation"
          },
          "lgpsPayCategory": {
            "$ref": "#/components/schemas/LgpsPayCategory"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "A PayCodeSet is used to group together a number of PayCodes."
      },
      "PayCodeVarianceLine": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "primaryValue": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "secondaryValue": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayElementReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayElementReportLine"
            },
            "nullable": true
          },
          "payCodeTotals": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "nullable": true,
            "readOnly": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PayElementReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "niNumber": {
            "type": "string",
            "nullable": true
          },
          "payElements": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "nullable": true
          },
          "hasPay": {
            "type": "boolean",
            "readOnly": true
          },
          "totalPay": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PayElementReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PayElementReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PayGradesReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AveragePayGradesReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PayGradesReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PayGradesReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PayLine": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "The amount to add or deduct (whether it is a deduction or addition depends on the PayCode used).\r\nIf the PayCode has a CalculationType other than FixedAmount then this field will be a percentage.\r\nIf the PayCode has a MultiplierType other than None then this field will be readonly and automatically calculated.",
            "format": "double"
          },
          "rate": {
            "type": "number",
            "description": "If the related  PayCode has a MultiplierType other than None then this field will be used as the rate per day or hour. Otherwise it isn't used",
            "format": "double",
            "nullable": true
          },
          "multiplier": {
            "type": "number",
            "description": "If the related PayCode has a MultiplierType other than None then this field will be used as number of days or hours",
            "format": "double",
            "nullable": true
          },
          "description": {
            "maxLength": 100,
            "type": "string",
            "description": "A free form description to accompany this line. It will be displayed on the payslip.",
            "nullable": true
          },
          "attachmentOrderId": {
            "type": "string",
            "description": "[readonly] The Id of the associated AttachmentOrder. Only included if the Code is AEO",
            "format": "uuid",
            "nullable": true
          },
          "pensionId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Pension. Only included if the Code is PENSION, PENSIONSS or PENSIONRAS",
            "format": "uuid",
            "nullable": true
          },
          "leaveId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Leave. Only included if the PayLine is a result of a Leave with Statutory pay",
            "format": "uuid",
            "nullable": true
          },
          "loanId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Loan, if any.",
            "format": "uuid",
            "nullable": true
          },
          "benefitId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leaveStatutoryDaysPaid": {
            "type": "number",
            "description": "[readonly] If the PayLine is a result of a Leave with Statutory Pay then this property tells you how many days they've been paid for (based on their Working Pattern).",
            "format": "double",
            "nullable": true
          },
          "leaveStatutoryWeeksPaid": {
            "type": "number",
            "description": "[readonly] If the PayLine is a result of a Leave with Statutory Pay then this property tells you how many weeks they've been paid for (based on their Working Pattern).",
            "format": "double",
            "nullable": true
          },
          "code": {
            "type": "string",
            "description": "The Code of the PayCode this line is assigned to. The PayCode determines the treatment of this line when it comes to NI, Tax and Pensions as well as whether it's a deduction or addition.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "childId": {
            "type": "string",
            "description": "This is nothing but the UniqueId of the model.",
            "format": "uuid"
          },
          "isNetToGross": {
            "type": "boolean",
            "description": "If the PayLine is a fixed amount addition without multiplier then this property may be set to true so that the amount of the addition to be considered a take home pay target."
          },
          "targetNetToGrossValue": {
            "type": "number",
            "description": "The original net fixed addition amount that is considered to be a take home pay target.",
            "format": "double",
            "nullable": true
          },
          "netToGrossDiscrepancy": {
            "type": "number",
            "description": "The discrepancy between the targeted and the calculated grossed up value during a net to gross calculation.",
            "format": "double",
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date the pay line starts being calculated in payrun",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "description": "The date the pay line stops being calculated in payrun",
            "format": "date",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "departmentTitle": {
            "type": "string",
            "nullable": true
          },
          "costCentre": {
            "type": "string",
            "nullable": true
          },
          "costCentreTitle": {
            "type": "string",
            "nullable": true
          },
          "departmentId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "costCentreId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "isAutoGeneratedBasicPayLine": {
            "type": "boolean"
          },
          "percentageOfEffectiveDays": {
            "type": "number",
            "description": "The percentage of working days the effective dates span for pro-rata'ing values, calculated/set during each payrun",
            "format": "double",
            "nullable": true
          },
          "totalWorkingDays": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean"
          },
          "isAutomaticBackPay": {
            "type": "boolean",
            "description": "Automatically calculate back pay and add or modify the necessary pay lines for this addition/deduction when a pay run is created.\r\nApplicable only to employee level addition/deduction pay lines.\r\nIf set to false then you must manually handle the calculation and adding of back pay lines."
          },
          "ignoreInitialBackPay": {
            "type": "boolean",
            "description": "Skip the automatic backpay calculation on the first pay run, if the addition/deduction had been paid outside or Staffology.\r\nIf set to false, the automatic backpay calculation will be performed on the first pay run."
          },
          "initialBackPayPublicPayRunId": {
            "type": "string",
            "description": "Used to mark the first payrun where this payline has been payrolled for backpay",
            "format": "uuid",
            "nullable": true
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "contributesToBasicPay": {
            "type": "boolean",
            "description": "Indicates whether this pay line contributes to the basic pay of the employee.\r\nWill be set to true by default when IsAutoGeneratedBasicPayLine is true."
          },
          "calculateAsWhenPaid": {
            "type": "boolean",
            "description": "Indicates whether this pay line should be treated as When Paid rather than When Earned"
          },
          "totalPaidDays": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "roleId": {
            "type": "string",
            "description": "The employee role which is associated with this pay line.\r\nIf set to null, the pay line is not related with a role.",
            "format": "uuid",
            "nullable": true
          },
          "employeeRoleReference": {
            "type": "string",
            "nullable": true
          },
          "earnedFrom": {
            "type": "string",
            "description": "Nullable DateTime property \"EarnedFrom\" in the PayLine model to store the start date of the PayLine's 'earned' period in a PayRun.",
            "format": "date",
            "nullable": true
          },
          "earnedTo": {
            "type": "string",
            "description": "Nullable DateTime property \"EarnedTo\" in the PayLine model to store the end date of the PayLine's 'earned' period in a PayRun.",
            "format": "date",
            "nullable": true
          },
          "periodFrom": {
            "type": "string",
            "description": "Nullable DateTime property \"PeriodFrom\" in the PayLine model to store the start date of the PayRun period the current PayLine is part of.",
            "format": "date",
            "nullable": true
          },
          "periodTo": {
            "type": "string",
            "description": "Nullable DateTime property \"PeriodTo\" in the PayLine model to store the end date of the PayRun period the current PayLine is part of.",
            "format": "date",
            "nullable": true
          },
          "annualValue": {
            "type": "number",
            "description": "The original value from the PayLine before we modify it\r\nCurrently only used when CalculationType is set to FixedAnnualAmount\r\nso we can determine whether the pay line value needs calculating or not\r\nTo recalculate set to null with annual amount recorded in Value",
            "format": "double",
            "nullable": true
          },
          "parentId": {
            "type": "string",
            "description": "[readonly] The Id of the associated employee level pay line, if the current line is a back pay line.",
            "format": "uuid",
            "nullable": true
          },
          "isAutoCalculatedBackPayLine": {
            "type": "boolean",
            "readOnly": true
          },
          "isZeroHoursTeachersBackPayLine": {
            "type": "boolean",
            "description": "[readonly] Indicates whether this pay line is a backdated pay claim line\r\nbelonging to a zero hours contract teacher."
          },
          "analysisCategoriesCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisCategoryCodes"
            },
            "description": "List of analysis Category Codes",
            "nullable": true
          },
          "analysisCategoryCodeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "List of analysis Category Codes  uniqueId",
            "nullable": true
          },
          "paySpineId": {
            "type": "string",
            "description": "[readonly] The Id of the associated pay spine.",
            "format": "uuid",
            "nullable": true
          },
          "paySpineGradeId": {
            "type": "string",
            "description": "[readonly] The Id of the associated pay spine grade.",
            "format": "uuid",
            "nullable": true
          },
          "spinalPointId": {
            "type": "string",
            "description": "[readonly] The Id of the associated spinal point.",
            "format": "uuid",
            "nullable": true
          },
          "londonAllowanceId": {
            "type": "integer",
            "description": "Used to set London allowance id for payline",
            "format": "int32",
            "nullable": true
          },
          "fullTimeAnnualValue": {
            "type": "number",
            "description": "Used to set Full Time Annual Value for payline",
            "format": "double"
          },
          "paySpine": {
            "type": "string",
            "description": "PaySpine name based on PaySpineId",
            "nullable": true
          },
          "payGrade": {
            "type": "string",
            "description": "PayGrade name based on PayGradeId",
            "nullable": true
          },
          "spinePoint": {
            "type": "string",
            "description": "SpinePoint name based on SpinePointId",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "importIdempotencyKey": {
            "type": "string",
            "description": "Deterministic GUID used for import idempotency tracking.\r\nGenerated from: blobScope|employerUniqueId|payrollCode|lineIndex",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "As well as the basic pay amount for an employee there are often additions and deductions such as bonuses.\r\nThese additions and deductions are represented using this model."
      },
      "PayMethod": {
        "enum": [
          "Cash",
          "Cheque",
          "Credit",
          "DirectDebit"
        ],
        "type": "string"
      },
      "PayOptions": {
        "type": "object",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "Indicates whether to use first, second, third (etc) PaySchedule for this PayPeriod.",
            "format": "int32"
          },
          "method": {
            "$ref": "#/components/schemas/PayMethod"
          },
          "withholdTaxRefundIfPayIsZero": {
            "type": "boolean",
            "description": "If you don't want negative PAYE values when the Gross pay is zero, set this to true"
          },
          "taxAndNi": {
            "$ref": "#/components/schemas/TaxAndNi"
          },
          "fpsFields": {
            "$ref": "#/components/schemas/FpsFields"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "nationalMinimumWage": {
            "type": "boolean"
          },
          "payCode": {
            "type": "string",
            "description": "If you want the Employees pay to be allocated to a code other than BASIC, specify it here",
            "nullable": true
          },
          "mileageVehicleType": {
            "$ref": "#/components/schemas/MileageVehicleType"
          },
          "mapsMiles": {
            "type": "integer",
            "description": "The number of miles to pay for as Mileage Allowance Payments",
            "format": "int32",
            "nullable": true
          },
          "payAmount": {
            "type": "number",
            "description": "The amount the Employee is regularly paid each period",
            "format": "double"
          },
          "payAmountMultiplier": {
            "type": "number",
            "description": "This property is irrelevant if the basis is Monthly.\r\nBut if the basis is Daily or Hourly then this property sets how many days/hours the employee should be paid for in the period.",
            "format": "double"
          },
          "baseHourlyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of \r\nthe employees base hourly rate. Eg Overtime.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "baseDailyRate": {
            "type": "number",
            "description": "This property is used to calculate values for PayCodes that are set as multiples of \r\nthe employees base daily rate. Eg sick.\r\nIf this is set as zero then we'll attempt to calculate a value based on the other fields",
            "format": "double"
          },
          "basicPay": {
            "type": "number",
            "description": "The amount of basic pay the Employee is regularly paid each period\r\nThis amount is the combined total of all pay elements that contribute to basic pay",
            "format": "double"
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "This sets whether the PayLine should be automatically adjusted or not for:\r\nLeave Entries;\r\nStarters/Leavers;\r\nPayLine effectiveFrom and effectiveTo values falling mid-way through a PayRun"
          },
          "niTable": {
            "type": "string"
          },
          "regularPayLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayLine"
            },
            "description": "These are used to make additions/deductions to the pay for this Employee.\r\nYou do not need to include Pension, Tax, NI,  Loan Repayments, etc as these will all be automatically created.",
            "nullable": true
          },
          "excludedRegularPayLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayLine"
            },
            "description": "These used to store the PayLines that have been excluded from RegularPaylines.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This object forms the basis of the Employees payment."
      },
      "PayOptionsImport": {
        "type": "object",
        "properties": {
          "employerIdentifier": {
            "type": "string",
            "description": "Optional. But if one entry has it then all must.\r\nAllows you to import to multiple employers by specifying the Employers AlternativeIdentifier",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "description": "The payroll code of the employee to update",
            "nullable": true
          },
          "payAmount": {
            "type": "number",
            "description": "The amount the Employee is regularly paid each period",
            "format": "double"
          },
          "basis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "payCode": {
            "type": "string",
            "description": "If you want to override the PayCode used for the Basic Pay then set the code here, otherwise leave this blank and the default will be used.",
            "nullable": true
          },
          "roleReference": {
            "type": "string",
            "description": "This is the unique reference of the Role that the employee is assigned to.",
            "nullable": true
          },
          "payAmountMultiplier": {
            "type": "number",
            "description": "This property is irrelevant if the basis is Monthly.\r\nBut if the basis is Daily or Hourly then this property sets how many days/hours the employee should be paid for in the period.",
            "format": "double"
          },
          "note": {
            "type": "string",
            "description": "Any note that you'd like to appear on the payslip",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "isNetToGross": {
            "type": "boolean"
          },
          "department": {
            "type": "string",
            "description": "Any Department that you'd like to appear on the payslip",
            "nullable": true
          },
          "costCentre": {
            "type": "string",
            "description": "Any CostCentre that you'd like to appear on the payslip",
            "nullable": true
          },
          "analysisCategoryCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisCategoryCodes"
            },
            "description": "List of Analysis Category Codes associated with this item on the payslip.",
            "nullable": true
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayLine"
            },
            "nullable": true
          },
          "effectiveFrom": {
            "type": "string",
            "description": "EffectiveFrom date for imported pay lines",
            "format": "date",
            "nullable": true
          },
          "effectiveTo": {
            "type": "string",
            "description": "EffectiveTo date for imported pay lines",
            "format": "date",
            "nullable": true
          },
          "isAutomaticBackPay": {
            "type": "boolean",
            "description": "IsAutomaticBackPay for imported pay lines"
          },
          "ignoreInitialBackPay": {
            "type": "boolean",
            "description": "IgnoreInitialBackPay for imported pay lines"
          },
          "contributesToBasicPay": {
            "type": "boolean",
            "description": "ContributesToBasicPay for imported pay lines"
          },
          "autoAdjustForLeave": {
            "type": "boolean",
            "description": "AutoAdjustForLeave for imported pay lines"
          },
          "paySpine": {
            "type": "string",
            "description": "PaySpine for imported pay lines",
            "nullable": true
          },
          "payGrade": {
            "type": "string",
            "description": "PayGrade for imported pay lines",
            "nullable": true
          },
          "spinePoint": {
            "type": "string",
            "description": "SpinePoint for imported pay lines",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This object is used to import payment information for a payrun entry"
      },
      "PayPeriodEventType": {
        "enum": [
          "SubmitForProcessing",
          "SendForApproval",
          "Approval",
          "Finalise",
          "SendPaySlip",
          "SubmitRti"
        ],
        "type": "string",
        "description": "Different events supported for a PaySchedule Period. These events happen a pre-configured number of days before the PaymentDate for that PaySchedulePeriod."
      },
      "PayPeriodTypes": {
        "enum": [
          "Custom",
          "Monthly",
          "FourWeekly",
          "Fortnightly",
          "Weekly",
          "Daily"
        ],
        "type": "string"
      },
      "PayPeriods": {
        "enum": [
          "Custom",
          "Quarterly",
          "Monthly",
          "FourWeekly",
          "Fortnightly",
          "Weekly",
          "Daily",
          "Annual"
        ],
        "type": "string"
      },
      "PayRun": {
        "type": "object",
        "properties": {
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "taxMonth": {
            "type": "integer",
            "description": "[readonly] The Tax Month that the Payment Date falls in",
            "format": "int32"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "[readonly] Indicates whether this uses first, second, third (etc.) PaySchedule for this PayPeriod.",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "description": "[readonly] The period (i.e, Tax Week or Tax Month) that this PayRun is for.",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "description": "[readonly] The version of this PayRun in case any supplementary pay runs have been created for the same period.",
            "format": "int32"
          },
          "isLatestVersion": {
            "type": "boolean",
            "description": "[readonly] Indicates whether this is the latest version of the PayRun."
          },
          "description": {
            "type": "string",
            "description": "Description of the current version of the PayRun.",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "[readonly] The start date of the period this PayRun covers",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "[readonly] The end date of the period this PayRun covers",
            "format": "date"
          },
          "paymentDate": {
            "type": "string",
            "description": "[readonly] The intended date that Employees will be paid, although this can be changed on a per PayRunEntry basis",
            "format": "date"
          },
          "originalPayRunPaymentDate": {
            "type": "string",
            "description": "[readonly] If this PayRun is a supplementary PayRun then this will be the date of the original PayRun's Payment Date",
            "format": "date",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "description": "[readonly] The number of Employees included in this PayRun (including any CIS Subcontractors)",
            "format": "int32"
          },
          "subContractorCount": {
            "type": "integer",
            "description": "[readonly] The number of CIS Subcontractors included in this PayRun",
            "format": "int32"
          },
          "nonRtiEmployeeCount": {
            "type": "integer",
            "description": "[readonly] The number of employees excluded from the RTI submission in this PayRun",
            "format": "int32"
          },
          "totals": {
            "$ref": "#/components/schemas/PayRunTotals"
          },
          "previousVersionTotals": {
            "$ref": "#/components/schemas/PayRunTotals"
          },
          "payslipScheduledDateTime": {
            "type": "string",
            "description": "The scheduled date time for sending payslips by email.",
            "format": "date",
            "nullable": true
          },
          "state": {
            "$ref": "#/components/schemas/PayRunState"
          },
          "isClosed": {
            "type": "boolean",
            "description": "[readonly] Set to True if the PayRun is Finalised and changes can no longer be made",
            "readOnly": true
          },
          "isRolledBack": {
            "type": "boolean",
            "description": "[readonly] Set to True if the PayRun is currently rolled back"
          },
          "dateClosed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "autoPilotCloseDate": {
            "type": "string",
            "description": "[readonly] If AutoPilot is enabled in the AutomationSettings for the Employer then this property will tell you when\r\nthe payrun will be automatically closed",
            "format": "date",
            "nullable": true
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] The PayRunEntries that make up this PayRun.\r\nThis is populate automatically when you start a PayRun.",
            "nullable": true
          },
          "isCombinedPayRun": {
            "type": "boolean",
            "description": "Indicates if the payRun is a combined pay run or not"
          },
          "navigation": {
            "$ref": "#/components/schemas/PayRunEntryNavigation"
          }
        },
        "additionalProperties": false,
        "description": "This model is right at the very heart of the software.\r\nThere is a PayRun for each period in which people are paid."
      },
      "PayRunChanges": {
        "type": "object",
        "properties": {
          "payRunEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "A list of PayRunEntries where the PayRunEntry itself has been modified and.or the related Employee record was changed",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayRunCsvType": {
        "enum": [
          "Summary",
          "Lines",
          "PayrollCodeAndNameOnly",
          "ColumnCsvMapping"
        ],
        "type": "string"
      },
      "PayRunEntry": {
        "type": "object",
        "properties": {
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "taxMonth": {
            "type": "integer",
            "description": "[readonly] The Tax Month that the Payment Date falls in",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "[readonly]",
            "format": "date"
          },
          "note": {
            "maxLength": 500,
            "type": "string",
            "description": "Any note that you'd like to appear on the payslip",
            "nullable": true
          },
          "bacsSubReference": {
            "type": "string",
            "description": "[readonly] A randomly generated string for use with the RTI Hash Cross Reference",
            "nullable": true
          },
          "bacsHashCode": {
            "type": "string",
            "description": "[readonly] A Hash Code used for RTI BACS Hash Cross Reference",
            "nullable": true
          },
          "percentageOfWorkingDaysPaidAsNormal": {
            "type": "number",
            "description": "[readonly] If the employee is paid a set amount per period (ie, not an hourly or daily rate) and there is any Leave that is either Not Paid or Statutory Pay then this value\r\nwill give the percentage of working days (based on the Working Pattern) that should be paid as normal.\r\nIf there is no Leave in the period or PayOptions.AutoAdjustForLeave is false, then this will be 1.",
            "format": "double"
          },
          "workingDaysNotPaidAsNormal": {
            "type": "number",
            "description": "[readonly] If PercentageOfWorkingDaysPaidAsNormal has a value other than 1\r\nthen this property will tell you how many working days have been deducted from the basic pay\r\ndue to either being Not Paid or Statutory Pay",
            "format": "double"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "[readonly] Indicates whether this uses the first, second, third (etc) PaySchedule for this PayPeriod.",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "description": "[readonly] The Tax Week or Tax Month number this PayRunEntry relates to",
            "format": "int32"
          },
          "isNewStarter": {
            "type": "boolean",
            "description": "Determines whether or not this Employee will be declared as a new starter on the resulting FPS"
          },
          "unpaidAbsence": {
            "type": "boolean",
            "description": "[readonly] Indicates that there was unpaid absence in the pay period"
          },
          "hasAttachmentOrders": {
            "type": "boolean",
            "description": "[readonly] Indicates that there are AttachmentOrders for this Employee in this entry"
          },
          "paymentDate": {
            "type": "string",
            "description": "The date this payment was or will be made",
            "format": "date"
          },
          "originalPayRunEntryPaymentDate": {
            "type": "string",
            "description": "[readonly] If this PayRunEntry is a supplementary PayRunEntry then this will be the date of the original PayRunEntry's Payment Date",
            "format": "date",
            "nullable": true
          },
          "priorPayrollCode": {
            "type": "string",
            "description": "[readonly] If the FPS needs to declare a change of PayId then this will contain the previous code\r\nIt's worked out automatically but can also be set from the Employees EmploymentDetails property.",
            "nullable": true
          },
          "pensionSummary": {
            "$ref": "#/components/schemas/PensionSummary"
          },
          "pensionSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PensionSummary"
            },
            "description": "[readonly] A summary of the details for the Pensions (if any) that the Employee is assigned to.",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "totals": {
            "$ref": "#/components/schemas/PayRunTotals"
          },
          "periodOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValueOverride"
            },
            "description": "Any calculated values for this period that should be overridden with a different value",
            "nullable": true
          },
          "totalsYtd": {
            "$ref": "#/components/schemas/PayRunTotals"
          },
          "totalsYtdOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValueOverride"
            },
            "description": "Any values of TotalsYtd that should be overridden with a different value",
            "nullable": true
          },
          "forcedCisVatAmount": {
            "type": "number",
            "description": "If this employee is a CIS Subcontractor registered for VAT, we'll automatically work out VAT at the set rate.\r\nIf you want to override this calculations then set this property to anything other than null.",
            "format": "double",
            "nullable": true
          },
          "holidayAccrued": {
            "type": "number",
            "description": "The amount of holiday days or hours accrued in the period.",
            "format": "double"
          },
          "state": {
            "$ref": "#/components/schemas/PayRunState"
          },
          "isClosed": {
            "type": "boolean",
            "description": "[readonly] Set to True if the PayRun is Finalised and changes can no longer be made to the PayRunEntries",
            "readOnly": true
          },
          "manualNi": {
            "type": "boolean",
            "description": "If set to true then you must provide your own value for NationalInsuranceCalculation.\r\nYou'd normally leave this set to false and let us automatically calculate NI amounts."
          },
          "niSplit": {
            "type": "boolean",
            "description": "If set to true Ni calculations are done for backdated pay for each pay period separately and then summed up"
          },
          "nationalInsuranceCalculation": {
            "$ref": "#/components/schemas/NationalInsuranceCalculation"
          },
          "payrollCodeChanged": {
            "type": "boolean",
            "description": "[readonly] Indicates whether or not the Payroll Code for this Employee has changed since the last FPS",
            "readOnly": true
          },
          "aeNotEnroledWarning": {
            "type": "boolean",
            "description": "[readonly] If true then this Employee needs to be on an Auto Enrolment pension but isn't yet."
          },
          "fps": {
            "$ref": "#/components/schemas/Item"
          },
          "emailId": {
            "type": "string",
            "description": "If the Payslip for this PayRunEntry has been emailed to the employee then the Id for an EmployerEmail will be provided here.\r\nif the value is all zeroes then the email is in the process of being created.",
            "format": "uuid",
            "nullable": true
          },
          "recievingOffsetPay": {
            "type": "boolean",
            "description": "If the pay is being topped up due to an applied Leave having the offset value set to true then\r\nthis will be set to true"
          },
          "paymentAfterLeaving": {
            "type": "boolean",
            "description": "[readonly] If this payment is for an employee that has left then this is set to true."
          },
          "umbrellaPayment": {
            "$ref": "#/components/schemas/UmbrellaPayment"
          },
          "isRemoved": {
            "type": "boolean",
            "description": "Has the entry been removed from the payrun"
          },
          "isRolledBack": {
            "type": "boolean",
            "description": "[readonly] Set to True if the Pay Run Entry is currently rolled back"
          },
          "payRunVersion": {
            "type": "integer",
            "description": "[readonly] The supplementary pay run version of this PayRunEntry.",
            "format": "int32"
          },
          "isLatestVersion": {
            "type": "boolean",
            "description": "[readonly] Indicates whether this is the latest version of the PayRunEntry."
          },
          "periodsCovered": {
            "type": "integer",
            "description": "[readonly] The amount of periods that the Pay Run Entry covers. This can be > 1 when back pay for previous periods is paid in the current period",
            "format": "int32"
          },
          "employeeRolePayItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeRolePayItem"
            },
            "description": "[readonly] Automatically populated.\r\nArray of base hourly and daily rates for the employee roles",
            "nullable": true
          },
          "warnings": {
            "$ref": "#/components/schemas/PayRunEntryWarningType"
          },
          "niLetterError": {
            "$ref": "#/components/schemas/NiLetterError"
          },
          "teachersPensionAgeWarning": {
            "$ref": "#/components/schemas/TeachersPensionAgeWarning"
          },
          "previousVersionTotals": {
            "$ref": "#/components/schemas/PayRunTotals"
          },
          "differencePensionSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PensionSummary"
            },
            "description": "[readonly] A summary of the details for the Pensions (if any) that the Employee is assigned to.",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          },
          "personalDetails": {
            "$ref": "#/components/schemas/PersonalDetails"
          },
          "employmentDetails": {
            "$ref": "#/components/schemas/EmploymentDetails"
          },
          "payOptions": {
            "$ref": "#/components/schemas/PayOptions"
          }
        },
        "additionalProperties": false,
        "description": "A PayRun contains multiple PayRunEntries, one for each Employee that is being paid.\r\nThe value for ```PersonalDetails``` and ```EmploymentDetails``` is copied from the Employee record.\r\nSo to change them you should update the Employee, not the PayRunEntry.\r\nChanges made to the Employee are only reflected whilst the PayRun is still open.\r\nOnce you finalise and close the PayRun then a snapshot is taken of these values which is stored with the PayRunEntry for future reference."
      },
      "PayRunEntryNavigation": {
        "type": "object",
        "properties": {
          "firstId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "lastId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "previousId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "nextId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "entryCount": {
            "type": "integer",
            "format": "int32"
          },
          "currentIndex": {
            "type": "integer",
            "format": "int32"
          },
          "currentId": {
            "type": "string",
            "format": "uuid"
          },
          "payRunEntrySortBy": {
            "$ref": "#/components/schemas/PayRunEntrySortBy"
          },
          "sortDescending": {
            "type": "boolean"
          },
          "searchTerm": {
            "type": "string",
            "nullable": true
          },
          "zeroPaidFilterSelected": {
            "$ref": "#/components/schemas/ZeroPaidFilter"
          },
          "departmentFilterSelected": {
            "type": "string",
            "nullable": true
          },
          "startersLeaversFilterSelected": {
            "$ref": "#/components/schemas/StartersLeaversFilter"
          },
          "rolledBackOnly": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PayRunEntrySortBy": {
        "enum": [
          "PayrollCode",
          "FirstName",
          "LastName",
          "TotalCost",
          "NetPay",
          "GrossPay",
          "TakeHomePay",
          "Paye",
          "EmployeeNic",
          "EmployerNic",
          "PaymentDate"
        ],
        "type": "string"
      },
      "PayRunEntryWarningType": {
        "enum": [
          "MissingBankDetails",
          "MissingAddressLines",
          "AddressInvalid",
          "NinoInvalid",
          "BelowNationalMinimumWage",
          "HighGrossPay",
          "HighNetPay",
          "InReceiptOfTaxRefund",
          "NetToGrossDiscrepancyAboveThreshold",
          "StatutoryMaternity",
          "TeachersPensionNotAutoCalculated",
          "JointTeachersPensionsNotAutoCalculated",
          "MissingNiNumber",
          "OpenEndedAbsences",
          "SspHasExpired",
          "SspDueToExpire",
          "InvalidBankDetails",
          "DuplicateEmployee",
          "TeachersPensionAge",
          "TeachersPensionMcrRoleIdMissing"
        ],
        "type": "string"
      },
      "PayRunJournal": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayRunSummaryLine"
            },
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "[readonly] The PaymentDate from the PayRun",
            "format": "date"
          },
          "title": {
            "type": "string",
            "description": "[readonly] The status of the task for posting this journal to an ExternalDataProvider",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "statusMessage": {
            "type": "string",
            "description": "[readonly] A message to elaborate on the Status",
            "nullable": true
          },
          "link": {
            "type": "string",
            "description": "[readonly] If available, a link to the journal in the ExternalDataProvider",
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "mergeMatchingNominals": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "csvFormat": {
            "$ref": "#/components/schemas/JournalCsvFormat"
          }
        },
        "additionalProperties": false
      },
      "PayRunPayment": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PayeeType"
          },
          "payee": {
            "$ref": "#/components/schemas/Item"
          },
          "date": {
            "type": "string",
            "description": "[readonly] The date the payment is to be made",
            "format": "date"
          },
          "method": {
            "$ref": "#/components/schemas/PayMethod"
          },
          "amount": {
            "type": "number",
            "description": "[readonly] The amount to pay",
            "format": "double"
          },
          "reference": {
            "type": "string",
            "description": "[readonly] The period the payment is for",
            "nullable": true
          },
          "employerPaymentReference": {
            "type": "string",
            "description": "The employer's payment reference, formatted as per the employer settings",
            "nullable": true
          },
          "bankDetails": {
            "$ref": "#/components/schemas/BankDetails"
          },
          "bacsHash": {
            "type": "string",
            "description": "[readonly] if paying by Credit and you've enabled BacsHash then this will contain the BacsHash included on the FPS",
            "nullable": true
          },
          "bacsSubReference": {
            "type": "string",
            "description": "[readonly] if paying by Credit and you've enabled BacsHash then this will contain the BacsSubReference included on the FPS",
            "nullable": true
          },
          "isBankDetailValid": {
            "type": "boolean",
            "description": "[readonly] for checking if bank details are valid"
          }
        },
        "additionalProperties": false
      },
      "PayRunState": {
        "enum": [
          "Opening",
          "Open",
          "ReOpening",
          "RollingBack",
          "RolledBack",
          "SubmittedForProcessing",
          "Processing",
          "AwaitingApproval",
          "Approved",
          "Finalising",
          "Finalised",
          "Deleting"
        ],
        "type": "string"
      },
      "PayRunStateChange": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/PayRunState"
          },
          "reason": {
            "$ref": "#/components/schemas/PayRunStateChangeReason"
          },
          "reasonText": {
            "maxLength": 300,
            "type": "string",
            "description": "A free-form text field for a reason for the change of state.",
            "nullable": true
          },
          "employeeUniqueIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "List of employee unique ids, whose PayRunEntries to be re-opened during a Payrun rollback operation.\r\nWill be used only during a transition to a rolled back pay run state",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayRunStateChangeReason": {
        "enum": [
          "Other",
          "AdditionalDataNotSubmitted",
          "ChangeToOriginalData",
          "PayBureauError"
        ],
        "type": "string"
      },
      "PayRunSummaryLine": {
        "type": "object",
        "properties": {
          "nominalCode": {
            "type": "string",
            "description": "[readonly] If you've set up NominalCodeMapping then the relevant Nominal code for the PayCode will be shown here.",
            "nullable": true
          },
          "departmentCode": {
            "type": "string",
            "description": "[readonly] If the journal is split by department then the relevant department code is shown here.",
            "nullable": true
          },
          "nominalName": {
            "type": "string",
            "description": "[readonly] As above",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "[readonly] A description of what this line summarises.",
            "nullable": true
          },
          "qty": {
            "type": "number",
            "description": "[readonly] If the PayCode is a Multiplier code then this will contain the number of days/hours",
            "format": "double",
            "nullable": true
          },
          "value": {
            "type": "number",
            "description": "[readonly] The total value for this line.",
            "format": "double"
          },
          "payCode": {
            "$ref": "#/components/schemas/PayCode"
          },
          "costCentreCode": {
            "type": "string",
            "description": "[readonly] If the journal is split by cost centre then the relevant cost centre code is shown here.",
            "nullable": true
          },
          "analysisCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisCategory"
            },
            "description": "[readonly] If the journal is split by analysis categories",
            "nullable": true
          },
          "analysisCategoryCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisCategoryCode"
            },
            "description": "[readonly] If the journal is split by analysis categories then the relevant analysis categories code is shown here.",
            "nullable": true
          },
          "employeeUniqueId": {
            "type": "string",
            "description": "[readonly] The EmployeeId this summary line relates to.",
            "format": "uuid",
            "nullable": true
          },
          "journalNarrative": {
            "type": "string",
            "description": "[readonly] Gets the journal narrative for the pension, if defined.",
            "nullable": true
          },
          "pensionId": {
            "type": "string",
            "description": "[readonly] The PensionId of the pension associated with this summary line, only present for pension summary lines.",
            "format": "uuid",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Employee"
          },
          "unMappedNominalCode": {
            "type": "string",
            "description": "[readonly] Unmapped Nominal Code is the Nominal Code without the Nominal Mapping.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An array of this model is used to represent a summary of a PayRun.\r\nThis would typically be used for creating accounting entries for the PayRun."
      },
      "PayRunSummaryLineIEnumerableReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayRunSummaryLine"
            },
            "description": "[readonly] If the type is application.json then this will contain a JSON representation of the relevant model",
            "nullable": true
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PayRunTotals": {
        "type": "object",
        "properties": {
          "basicPay": {
            "type": "number",
            "description": "[readonly] The amount to be paid to this Employee as a result of the PayOptions that have been set",
            "format": "double"
          },
          "gross": {
            "type": "number",
            "description": "[readonly] Gross pay",
            "format": "double"
          },
          "grossForNi": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that is subject to NI",
            "format": "double"
          },
          "grossForNiNonRti": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that is subject to NI but excluded from RTI",
            "format": "double"
          },
          "grossNotSubjectToEmployersNi": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that is not subject to Employers NI.\r\nThis is the same as GrossForNI where the employees NI Table has an Er contribution",
            "format": "double"
          },
          "grossNotSubjectToEmployersNiNonRti": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that is not subject to Employers NI.\r\nThis is the same as GrossForNI where the employees NI Table has an Er contribution\r\nThis is the amount that is excluded from RTI",
            "format": "double"
          },
          "grossForTax": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that is subject to PAYE",
            "format": "double"
          },
          "employerNi": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employerNiNonRti": {
            "type": "number",
            "description": "[readonly] Employer NI excluded from RTI",
            "format": "double"
          },
          "employeeNi": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employeeNiNonRti": {
            "type": "number",
            "description": "[readonly] Employee NI excluded from RTI",
            "format": "double"
          },
          "employerNiOffPayroll": {
            "type": "number",
            "description": "[readonly] The amount included in EmployerNi that is in relation to Off-Payroll Workers",
            "format": "double"
          },
          "realTimeClass1ANi": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "realTimeClass1ANiNonRti": {
            "type": "number",
            "description": "[readonly] Real Time Class 1A NI excluded from RTI",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "taxNonRti": {
            "type": "number",
            "description": "[readonly] Tax excluded from RTI",
            "format": "double"
          },
          "netPay": {
            "type": "number",
            "description": "[readonly] The Net Pay for this Employee",
            "format": "double"
          },
          "adjustments": {
            "type": "number",
            "description": "[readonly] The value of adjustments made to the Net Pay (Non taxable/NIable additions/deductions)",
            "format": "double"
          },
          "notionalPay": {
            "type": "number",
            "description": "[readonly] The value of adjustments that are of type notional.",
            "format": "double"
          },
          "additions": {
            "type": "number",
            "description": "The value of all additions.  This minus Deductions should equal TakeHomePay",
            "format": "double"
          },
          "deductions": {
            "type": "number",
            "description": "The value of all deductions.  Additions minus This value should equal TakeHomePay",
            "format": "double"
          },
          "takeHomePay": {
            "type": "number",
            "description": "[readonly] The amount this Employee takes home",
            "format": "double"
          },
          "nonTaxOrNICPmt": {
            "type": "number",
            "description": "[readonly] The value of any payments being made to this Employee that aren't being subjected to PAYE or NI",
            "format": "double"
          },
          "itemsSubjectToClass1NIC": {
            "type": "number",
            "description": "[readonly] Items subject to Class 1 NIC but not taxed under PAYE regulations excluding pension contributions",
            "format": "double"
          },
          "dednsFromNetPay": {
            "type": "number",
            "description": "[readonly] The value of any deductions being made to the Net Pay for this Employee",
            "format": "double"
          },
          "tcp_Tcls": {
            "type": "number",
            "description": "[readonly] Value of payments marked as Trivial Commutation Payment (A - TCLS)",
            "format": "double"
          },
          "tcp_Pp": {
            "type": "number",
            "description": "[readonly] Value of payments marked as Trivial Commutation Payment (B - Personal Pension)",
            "format": "double"
          },
          "tcp_Op": {
            "type": "number",
            "description": "[readonly] Value of payments marked as Trivial Commutation Payment (C - Occupational Pension)",
            "format": "double"
          },
          "flexiDd_Death": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing death benefit (taxable)",
            "format": "double"
          },
          "flexiDd_Death_NonTax": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing death benefit (non taxable)",
            "format": "double"
          },
          "flexiDd_Pension": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing pension (taxable)",
            "format": "double"
          },
          "flexiDd_Pension_NonTax": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing pension (non taxable)",
            "format": "double"
          },
          "flexiDd_SeriousIllHealth": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing serious ill health lump sum (taxable)",
            "format": "double"
          },
          "flexiDd_SeriousIllHealth_NonTax": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing serious ill health lump sum (non taxable)",
            "format": "double"
          },
          "flexiDd_StandAloneLumpSum": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing stand alone lump sum (taxable)",
            "format": "double"
          },
          "flexiDd_StandAloneLumpSum_NonTax": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing stand alone lump sum (non taxable)",
            "format": "double"
          },
          "flexiDd_PensionCommencementExcess": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing pension commencement excess lump sum (taxable)",
            "format": "double"
          },
          "flexiDd_PensionCommencementExcess_NonTax": {
            "type": "number",
            "description": "[readonly] Value of payments marked as flexibly accessing pension commencement excess lump sum (non taxable)",
            "format": "double"
          },
          "smp": {
            "type": "number",
            "description": "[readonly] Statutory Maternity Pay",
            "format": "double"
          },
          "smpNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Maternity Pay excluded from RTI",
            "format": "double"
          },
          "spp": {
            "type": "number",
            "description": "[readonly] Statutory Paternity Pay",
            "format": "double"
          },
          "sppNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Paternity Pay excluded from RTI",
            "format": "double"
          },
          "sap": {
            "type": "number",
            "description": "[readonly] Statutory Adoption Pay",
            "format": "double"
          },
          "sapNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Adoption Pay excluded from RTI",
            "format": "double"
          },
          "shpp": {
            "type": "number",
            "description": "[readonly] Statutory Shared Parental Pay",
            "format": "double"
          },
          "shppNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Shared Parental Pay excluded from RTI",
            "format": "double"
          },
          "spbp": {
            "type": "number",
            "description": "[readonly] Statutory Parental Bereavement Pay",
            "format": "double"
          },
          "spbpNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Parental Bereavement Pay excluded from RTI",
            "format": "double"
          },
          "spbpNorthernIreland": {
            "type": "number",
            "description": "[readonly] Statutory Parental Bereavement Pay Northern Ireland",
            "format": "double"
          },
          "spbpNorthernIrelandNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Parental Bereavement Pay Northern Ireland excluded from RTI",
            "format": "double"
          },
          "sncp": {
            "type": "number",
            "description": "[readonly] Statutory Neonatal Care Pay",
            "format": "double"
          },
          "sncpNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Neonatal Care Pay excluded from RTI",
            "format": "double"
          },
          "ssp": {
            "type": "number",
            "description": "[readonly] Statutory Sick  Pay",
            "format": "double"
          },
          "sspNonRti": {
            "type": "number",
            "description": "[readonly] Statutory Sick Pay excluded from RTI",
            "format": "double"
          },
          "studentLoanRecovered": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "studentLoanRecoveredNonRti": {
            "type": "number",
            "description": "[readonly] Student Loan recovered excluded from RTI",
            "format": "double"
          },
          "postgradLoanRecovered": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "postgradLoanRecoveredNonRti": {
            "type": "number",
            "description": "[readonly] Postgrad Loan recovered excluded from RTI",
            "format": "double"
          },
          "pensionableEarnings": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that is subject to Pension Deductions.\r\nIf the Pension Scheme uses Qualifying Earnings (upper and lower limits) then this value is before those are applied",
            "format": "double"
          },
          "pensionablePay": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that pension calculations are based on after taking into account Upper and Lower Limits for the WorkerGroup.",
            "format": "double"
          },
          "nonTierablePay": {
            "type": "number",
            "description": "[readonly] The value of any pay that shouldn't count towards determining a pension tier.",
            "format": "double"
          },
          "employeePensionContribution": {
            "type": "number",
            "description": "[readonly] The value of the Pension Contribution being made by this Employee, excluding any Additional Voluntary Contributions",
            "format": "double"
          },
          "employeePensionContributionAvc": {
            "type": "number",
            "description": "[readonly] The value of the Pension Contribution being made by this Employee as an Additional Voluntary Contribution",
            "format": "double"
          },
          "employerPensionContribution": {
            "type": "number",
            "description": "[readonly] The value of the Pension Contribution being made by the Employer for this Employee",
            "format": "double"
          },
          "empeePenContribnsNotPaid": {
            "type": "number",
            "description": "[readonly] Value of employee pension contributions that are not paid under 'net pay arrangements', including any AVC",
            "format": "double"
          },
          "empeePenContribnsPaid": {
            "type": "number",
            "description": "[readonly] Value of employee pension contributions paid under 'net pay arrangements', including any AVC",
            "format": "double"
          },
          "attachmentOrderDeductions": {
            "type": "number",
            "description": "[readonly] Value of deductions made due to AttachmentOrders",
            "format": "double"
          },
          "cisDeduction": {
            "type": "number",
            "description": "[readonly] Value of any CIS Deduction made",
            "format": "double"
          },
          "cisVat": {
            "type": "number",
            "description": "[readonly] Value of any VAT paid to CIS Subcontractor",
            "format": "double"
          },
          "cisUmbrellaFee": {
            "type": "number",
            "description": "[readonly] Value of any pre-tax fee charged to the CIS Subcontractor for processing the payment",
            "format": "double"
          },
          "cisUmbrellaFeePostTax": {
            "type": "number",
            "description": "[readonly] Value of any post-tax fee charged to the CIS Subcontractor for processing the payment",
            "format": "double"
          },
          "pbik": {
            "type": "number",
            "description": "[readonly] Value of any Payrolled Benefits In Kind",
            "format": "double"
          },
          "mapsMiles": {
            "type": "integer",
            "description": "[readonly] The number of miles paid for Mileage Allowance Payments",
            "format": "int32"
          },
          "foreignTaxAmount": {
            "type": "number",
            "description": "[readonly] The amount paid for Foreign Tax Credits in this period",
            "format": "double"
          },
          "foreignTaxAmountReclaimed": {
            "type": "number",
            "description": "[readonly] The amount of Foreign Tax Credits that you actually reclaimed",
            "format": "double"
          },
          "umbrellaFee": {
            "type": "number",
            "description": "[readonly] Value of any Umbrella fee charged for processing the payment",
            "format": "double"
          },
          "appLevyDeduction": {
            "type": "number",
            "description": "[readonly] Value of any Apprenticeship Levy fee deducted for processing the umbrella payment",
            "format": "double"
          },
          "paymentAfterLeaving": {
            "type": "number",
            "description": "[readonly] Payment After Leaving",
            "format": "double"
          },
          "taxOnPaymentAfterLeaving": {
            "type": "number",
            "description": "[readonly] Tax On Payment After Leaving",
            "format": "double"
          },
          "nilPaid": {
            "type": "integer",
            "description": "[readonly] The number of employees with NilPaid on the PayRun",
            "format": "int32"
          },
          "leavers": {
            "type": "integer",
            "description": "[readonly] The number of Leavers on ths PayRun",
            "format": "int32"
          },
          "starters": {
            "type": "integer",
            "description": "[readonly] The number of Starters on this PayRun",
            "format": "int32"
          },
          "newEmployeesInCurrentSupplementaryPayRun": {
            "type": "integer",
            "description": "[readonly] The number of new Employees included in the current supplementary PayRun",
            "format": "int32"
          },
          "p45Gross": {
            "type": "number",
            "description": "[readonly] The value P45 Gross which is held on the Employees Opening Balance",
            "format": "double",
            "nullable": true
          },
          "p45Tax": {
            "type": "number",
            "description": "[readonly] The value of P45 Tax which is held on the Employees Opening Balance",
            "format": "double",
            "nullable": true
          },
          "totalCost": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "recoverableAmounts": {
            "$ref": "#/components/schemas/RecoverableAmounts"
          }
        },
        "additionalProperties": false,
        "description": "Used to represent totals for a PayRun or PayRunEntry.\r\nIf a value is 0 then it will not be shown in the JSON."
      },
      "PaySchedule": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "type": "string",
            "description": "A descriptive name for this PaySchedule",
            "nullable": true
          },
          "ordinal": {
            "type": "integer",
            "description": "[readonly] Indicates whether this is first, second, third (etc) PaySchedule for this PayPeriod.",
            "format": "int32"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "firstPeriodEndDate": {
            "type": "string",
            "description": "The last day of the first pay period",
            "format": "date"
          },
          "firstPaymentDate": {
            "type": "string",
            "description": "The first payment date",
            "format": "date"
          },
          "paymentDateType": {
            "$ref": "#/components/schemas/PaymentDateType"
          },
          "periodEndDateType": {
            "$ref": "#/components/schemas/PaymentDateType"
          },
          "periodLengths": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Only applicable for PayPeriod of Custom. Defines the length of each period",
            "nullable": true
          },
          "highGrossPay": {
            "type": "number",
            "description": "A gross pay amount considered high for this PaySchedule",
            "format": "double"
          },
          "highNetPay": {
            "type": "number",
            "description": "A net pay amount considered high for this PaySchedule",
            "format": "double"
          },
          "periodEventsConfig": {
            "type": "object",
            "properties": {
              "SubmitForProcessing": {
                "type": "integer",
                "format": "int32"
              },
              "SendForApproval": {
                "type": "integer",
                "format": "int32"
              },
              "Approval": {
                "type": "integer",
                "format": "int32"
              },
              "Finalise": {
                "type": "integer",
                "format": "int32"
              },
              "SendPaySlip": {
                "type": "integer",
                "format": "int32"
              },
              "SubmitRti": {
                "type": "integer",
                "format": "int32"
              }
            },
            "additionalProperties": false,
            "description": "Only applicable if Bureau functionality is enabled. Defines the number of days each event occurs before the Payment Date.",
            "nullable": true
          },
          "hasOpenPayRunPeriod": {
            "type": "boolean",
            "description": "[readonly] Will be true if the employer currently has an open PayRun for this PayPeriod"
          },
          "lastPeriodEndDate": {
            "type": "string",
            "description": "[readonly] The end date of the most recent PayRun on this schedule",
            "format": "date",
            "nullable": true
          },
          "lastPeriodNumber": {
            "type": "integer",
            "description": "[readonly] The period number of the most recent PayRun on this schedule",
            "format": "int32",
            "nullable": true
          },
          "employeeCount": {
            "type": "integer",
            "description": "[readonly] The number of employees paid with this PaySchedule",
            "format": "int32"
          },
          "isRequired": {
            "type": "boolean",
            "description": "[readonly] Whether or not this PaySchedule is required for the employer, ie: they have employees to be paid on this PaySchedule",
            "readOnly": true
          },
          "isConfigured": {
            "type": "boolean",
            "description": "[readonly] Whether or not this PaySchedule has been configured and is ready for use"
          },
          "isYearCompleted": {
            "type": "boolean",
            "description": "[readonly] Returns true if all PayRuns for this PaySchedule in the TaxYear have been completed"
          },
          "yearEndTasks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[readonly] A list of actions that need to be completed for this PaySchedule before this TaxYear can be finalised",
            "nullable": true
          },
          "payRuns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] Details of PayRuns for this PaySchedule",
            "nullable": true
          },
          "currentPayRun": {
            "$ref": "#/components/schemas/Item"
          },
          "nextPayRun": {
            "$ref": "#/components/schemas/PayRun"
          },
          "publicCreatedDate": {
            "type": "string",
            "format": "date"
          },
          "employerName": {
            "type": "string",
            "description": "Employer name for this PaySchedule",
            "nullable": true
          },
          "employerUniqueId": {
            "type": "string",
            "description": "Employer Unique Id for this PaySchedule",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "PaySchedulePeriod": {
        "type": "object",
        "properties": {
          "paySchedulePeriodEvents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaySchedulePeriodEvent"
            },
            "description": "[readonly] List of all the events in this PaySchedulePeriod",
            "nullable": true
          },
          "period": {
            "type": "integer",
            "description": "[readonly] The Period number of the PaySchedulePeriod.",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "description": "[readonly] The start date of the PaySchedulePeriod",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "[readonly] The end date of the PaySchedulePeriod",
            "format": "date"
          },
          "paymentDate": {
            "type": "string",
            "description": "The payment date of the PaySchedulePeriod.",
            "format": "date"
          },
          "unadjustedPaymentDate": {
            "type": "string",
            "description": "The payment date of the PaySchedulePeriod when not accounting for weekends, bank hols or ad-hoc alterations to the pay schedule",
            "format": "date"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PaySchedulePeriodEvent": {
        "type": "object",
        "properties": {
          "payPeriodEventType": {
            "$ref": "#/components/schemas/PayPeriodEventType"
          },
          "eventDate": {
            "type": "string",
            "description": "The expected date and time of the event.",
            "format": "date"
          },
          "actualEventDate": {
            "type": "string",
            "description": "The actual date and time when the event was completed.",
            "format": "date",
            "nullable": true
          },
          "isOverDue": {
            "type": "boolean",
            "description": "Returns true if its past the event date.",
            "readOnly": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "An Event within a PaySchedulePeriod. The event could be scheduled x days before PaymentDate."
      },
      "PaySpineReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaySpineReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PaySpineReportLine": {
        "type": "object",
        "properties": {
          "spineName": {
            "type": "string",
            "description": "Name of the Pay Spine",
            "nullable": true
          },
          "fullTimeHours": {
            "type": "number",
            "description": "Maximum Full Time Hours on this Pay Spine",
            "format": "double"
          },
          "fullTimeWeeks": {
            "type": "number",
            "description": "Maximum Full Time Weeks on this Pay Spine",
            "format": "double"
          },
          "salaryFormula": {
            "type": "string",
            "description": "Formula used to derive annual salary",
            "nullable": true
          },
          "hourlyDivisor": {
            "type": "number",
            "description": "Hours used to determine Hourly Rate",
            "format": "double"
          },
          "hourlyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Hourly Rates",
            "format": "int32"
          },
          "dailyDivisor": {
            "type": "number",
            "description": "Days used to determine Full time Daily Rate",
            "format": "double"
          },
          "dailyDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Daily Rates",
            "format": "int32"
          },
          "annualDecimals": {
            "type": "integer",
            "description": "Number of decimal places to calculate Annual Salaries",
            "format": "int32"
          },
          "annualRoundingRule": {
            "$ref": "#/components/schemas/AnnualRoundingRule"
          },
          "incrementRule": {
            "$ref": "#/components/schemas/IncrementRule"
          },
          "requiresLondonAllowance": {
            "type": "boolean",
            "description": "Requires LA column to be completed on the spine"
          },
          "gradeEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable grades",
            "format": "date"
          },
          "pointEffectiveDate": {
            "type": "string",
            "description": "Effective date for applicable spinal points",
            "format": "date"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaySpineReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PaySpineReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PaySpineYearsServiceEntitlementBasis": {
        "enum": [
          "RoleStartDate",
          "EmploymentStartDate",
          "ContinuousStartDate",
          "AggregatedStartDate"
        ],
        "type": "string"
      },
      "Payee": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The name of this Payee"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/BankDetails"
          },
          "paymentDateRule": {
            "$ref": "#/components/schemas/PaymentDateRule"
          },
          "paymentDateDayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "paymentDateDayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "hasMinimumBankDetails": {
            "type": "boolean",
            "description": "Denotes whether the payee has the minimum bank details to receive a payment",
            "readOnly": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PayeeType": {
        "enum": [
          "Employee",
          "Hmrc",
          "PensionProvider",
          "Aeo",
          "Deduction"
        ],
        "type": "string"
      },
      "PaylineCalculationData": {
        "type": "object",
        "properties": {
          "fixedAnnualValue": {
            "type": "number",
            "description": "PaySpine full time annual value",
            "format": "double"
          },
          "contractedHours": {
            "type": "number",
            "description": "PaySpine contracted hours",
            "format": "double"
          },
          "contractedWeeks": {
            "type": "number",
            "description": "PaySpine contracted weeks",
            "format": "double"
          },
          "fullTimeEquivalent": {
            "type": "number",
            "description": "PaySpine full time equivalent value",
            "format": "double"
          },
          "fullTimeHours": {
            "type": "number",
            "description": "PaySpine full time hours",
            "format": "double"
          },
          "fullTimeWeeks": {
            "type": "number",
            "description": "PaySpine full time weeks",
            "format": "double"
          },
          "fullTimeSalary": {
            "type": "number",
            "description": "PaySpine full time salary",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PaymentDateRule": {
        "enum": [
          "OnPayDate",
          "OnDayOfWeekAfterPayDate",
          "OnDayOfMonth"
        ],
        "type": "string"
      },
      "PaymentDateType": {
        "enum": [
          "SameDate",
          "LastDay",
          "LastWeekday",
          "LastXxxday",
          "SameDateWorkingDay",
          "SecondXxxday",
          "ThirdXxxday",
          "FourthXxxday",
          "SecondToLastXxxday",
          "ThirdToLastXxxday"
        ],
        "type": "string"
      },
      "PaymentMethodAfterLeaving": {
        "enum": [
          "RegularPayMethod",
          "IrregularPayMethod"
        ],
        "type": "string"
      },
      "PaymentsCsvMapping": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/PaymentsCsvMappingType"
          },
          "importBehaviour": {
            "type": "integer",
            "format": "int32"
          },
          "payBasis": {
            "$ref": "#/components/schemas/PayBasis"
          },
          "hasHeader": {
            "type": "boolean"
          },
          "payrollCodeIndex": {
            "type": "integer",
            "format": "int32"
          },
          "employerIdIndex": {
            "type": "integer",
            "format": "int32"
          },
          "roleReferenceIndex": {
            "type": "integer",
            "format": "int32"
          },
          "payAmountIndex": {
            "type": "integer",
            "format": "int32"
          },
          "payAmountMultiplierIndex": {
            "type": "integer",
            "format": "int32"
          },
          "noteIndex": {
            "type": "integer",
            "format": "int32"
          },
          "payCodeIndex": {
            "type": "integer",
            "format": "int32"
          },
          "hasPaylineCosting": {
            "type": "boolean"
          },
          "departmentIndex": {
            "type": "integer",
            "format": "int32"
          },
          "costCentreIndex": {
            "type": "integer",
            "format": "int32"
          },
          "effectiveFromIndex": {
            "type": "integer",
            "format": "int32"
          },
          "effectiveToIndex": {
            "type": "integer",
            "format": "int32"
          },
          "isAutomaticBackPayIndex": {
            "type": "integer",
            "format": "int32"
          },
          "ignoreInitialBackPayIndex": {
            "type": "integer",
            "format": "int32"
          },
          "contributesToBasicPayIndex": {
            "type": "integer",
            "format": "int32"
          },
          "autoAdjustForLeaveIndex": {
            "type": "integer",
            "format": "int32"
          },
          "analysisCategoryIndexesJson": {
            "type": "string",
            "nullable": true
          },
          "paySpineIndex": {
            "type": "integer",
            "format": "int32"
          },
          "payGradeIndex": {
            "type": "integer",
            "format": "int32"
          },
          "spinePointIndex": {
            "type": "integer",
            "format": "int32"
          },
          "analysisCategoryIndexes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisCategoryIndex"
            },
            "nullable": true
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentsCsvMappingColumn"
            },
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "This model is used to save CSV mappings for importing of payments.\r\nIt probably has very little practical use outside of our own UI"
      },
      "PaymentsCsvMappingColumn": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 25,
            "minLength": 1,
            "type": "string"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "isReferenceOnly": {
            "type": "boolean",
            "description": "If set to true then no PayCode is mapped and this column is just for on-screen refernece only"
          },
          "colIndex": {
            "type": "integer",
            "format": "int32"
          },
          "isMultiplier": {
            "type": "boolean"
          },
          "isNetToGross": {
            "type": "boolean"
          },
          "rateColIndex": {
            "type": "integer",
            "description": "If the mapping IsMultiplier, then this optionally specifies another column from which to get the value",
            "format": "int32",
            "nullable": true
          },
          "shouldSerializeRateColIndex": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PaymentsCsvMappingType": {
        "enum": [
          "RowBased",
          "ColumnBased"
        ],
        "type": "string"
      },
      "PayrollAnalysisCostBreakdownReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrollAnalysisCostBreakdownReportLine"
            },
            "nullable": true
          },
          "payCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayCode"
            },
            "nullable": true
          },
          "employeesPayRunTotals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeePayRunTotal"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PayrollAnalysisCostBreakdownReportLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "$ref": "#/components/schemas/StringStringDecimalValueTuple"
          },
          "costCentre": {
            "$ref": "#/components/schemas/StringStringDecimalValueTuple"
          },
          "employeeRoleAnalysisCategory": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/StringDecimalKeyValuePair"
            },
            "nullable": true
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrollAnalysisCostBreakdownReportValue"
            },
            "nullable": true
          },
          "totalPay": {
            "type": "number",
            "format": "double"
          },
          "niablePay": {
            "type": "number",
            "format": "double"
          },
          "pensionPay": {
            "type": "number",
            "format": "double"
          },
          "niPercent": {
            "type": "number",
            "format": "double"
          },
          "ersNi": {
            "type": "number",
            "format": "double"
          },
          "pensionPercent": {
            "type": "number",
            "format": "double"
          },
          "ersPension": {
            "type": "number",
            "format": "double"
          },
          "taxablePay": {
            "type": "number",
            "format": "double"
          },
          "taxablePercent": {
            "type": "number",
            "format": "double"
          },
          "employeeNi": {
            "type": "number",
            "format": "double"
          },
          "taxPaid": {
            "type": "number",
            "format": "double"
          },
          "studentLoan": {
            "type": "number",
            "format": "double"
          },
          "employeePension": {
            "type": "number",
            "description": "The value of the Pension Contribution(PENSION) being made by the Employee",
            "format": "double"
          },
          "employeePensionContributionSalarySacrifice": {
            "type": "number",
            "description": "The value of the Pension Contribution Salary Sacrifice(PENSIONSS) being made by the Employee",
            "format": "double"
          },
          "employeePensionContributionReliefAtSource": {
            "type": "number",
            "description": "The value of the Pension Contribution Relief At Source(PENSIONRAS) being made by the Employee",
            "format": "double"
          },
          "pensionSummaryCostBreakdowns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PensionSummaryCostBreakdown"
            },
            "description": "List of pension summaries, each representing a breakdown of various pension components",
            "nullable": true
          },
          "roleId": {
            "type": "string",
            "description": "RoleId of that particular line entry",
            "format": "uuid",
            "nullable": true
          },
          "roleWeightage": {
            "type": "number",
            "description": "Weightage value of the given employee role",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PayrollAnalysisCostBreakdownReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PayrollAnalysisCostBreakdownReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PayrollAnalysisCostBreakdownReportValue": {
        "type": "object",
        "properties": {
          "qty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PayrollAnalysisEmployeeRoleBreakdownReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrollAnalysisEmployeeRoleBreakdownReportLine"
            },
            "nullable": true
          },
          "payCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayCode"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PayrollAnalysisEmployeeRoleBreakdownReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "fullEmployee": {
            "$ref": "#/components/schemas/Employee"
          },
          "employeeRole": {
            "$ref": "#/components/schemas/Item"
          },
          "department": {
            "$ref": "#/components/schemas/DepartmentMembership"
          },
          "gross": {
            "type": "number",
            "format": "double"
          },
          "niableGross": {
            "type": "number",
            "format": "double"
          },
          "net": {
            "type": "number",
            "format": "double"
          },
          "takeHome": {
            "type": "number",
            "format": "double"
          },
          "employerNic": {
            "type": "number",
            "format": "double"
          },
          "showQtyColumn": {
            "type": "boolean"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrollAnalysisEmployeeRoleBreakdownReportLineValue"
            },
            "nullable": true
          },
          "ersPension": {
            "type": "number",
            "format": "double"
          },
          "taxablePay": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PayrollAnalysisEmployeeRoleBreakdownReportLineValue": {
        "type": "object",
        "properties": {
          "qty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PayrollAnalysisEmployeeRoleBreakdownReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PayrollAnalysisEmployeeRoleBreakdownReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PayrollValueType": {
        "enum": [
          "BasicPay",
          "Gross",
          "GrossForTax",
          "GrossForNi",
          "EmployerNi",
          "EmployeeNi",
          "EmployerNiOffPayroll",
          "RealTimeClass1ANi",
          "Tax",
          "NetPay",
          "Adjustments",
          "TakeHomePay",
          "NonTaxOrNICPmt",
          "ItemsSubjectToClass1NIC",
          "DednsFromNetPay",
          "Tcp_Tcls",
          "Tcp_Pp",
          "Tcp_Op",
          "FlexiDd_Death",
          "FlexiDd_Death_NonTax",
          "FlexiDd_Pension",
          "FlexiDd_Pension_NonTax",
          "Smp",
          "Spp",
          "Sap",
          "Shpp",
          "Spbp",
          "StudentLoanRecovered",
          "PostgradLoanRecovered",
          "PensionablePay",
          "NonTierablePay",
          "EmployeePensionContribution",
          "EmployerPensionContribution",
          "EmpeePenContribnsNotPaid",
          "EmpeePenContribnsPaid",
          "AttachmentOrderDeductions",
          "CisDeduction",
          "CisVat",
          "CisUmbrellaFee",
          "CisUmbrellaFeePostTax",
          "Pbik",
          "MapsMiles",
          "UmbrellaFee",
          "AppLevyDeduction",
          "PaymentAfterLeaving",
          "TaxOnPaymentAfterLeaving",
          "Ssp",
          "AttachmentOrderAdminFee",
          "EmployeePensionNetPay",
          "EmployeePensionRas",
          "EmployeePensionSalSac",
          "EmployeePensionContributionAvc",
          "Deductions",
          "Additions",
          "PensionableEarnings",
          "TotalGross",
          "FlexiDd_SeriousIllHealth",
          "FlexiDd_SeriousIllHealth_NonTax",
          "ForeignTaxCredit",
          "ForeignTaxReclaimed",
          "AverageHolidayPay",
          "P45Gross",
          "P45Tax",
          "Sncp",
          "FlexiDd_StandAloneLumpSum",
          "FlexiDd_StandAloneLumpSum_NonTax",
          "FlexiDd_PensionCommencementExcess",
          "FlexiDd_PensionCommencementExcess_NonTax",
          "Average_Holiday_Pay_Days",
          "Holiday_Days_Day_Rate",
          "SpbpNorthernIreland",
          "Omp"
        ],
        "type": "string"
      },
      "PayrunEmail": {
        "required": [
          "name",
          "recipientAddress"
        ],
        "type": "object",
        "properties": {
          "isActive": {
            "type": "boolean",
            "description": "If false then this email won't be sent"
          },
          "name": {
            "maxLength": 75,
            "minLength": 1,
            "type": "string",
            "description": "Only used for reference, not included in the email"
          },
          "templateType": {
            "$ref": "#/components/schemas/EmployerTemplateType"
          },
          "recipientAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The address to which the email should be sent",
            "format": "email"
          },
          "pdfPassword": {
            "maxLength": 50,
            "type": "string",
            "description": "If a value is provided, then all PDFs attached to the email will be encrypted using this password",
            "nullable": true
          },
          "attachPayslips": {
            "type": "boolean",
            "description": "If set to true then Payslips will be attached to the email"
          },
          "payslips_Unemailed": {
            "type": "boolean",
            "description": "If AttachPayslips is true and this property is also true then only payslips that haven't already been sent directly to employees will be attached."
          },
          "payslips_SingleFile": {
            "type": "boolean",
            "description": "If AttachPayslips is true and this property is also true then the payslips will be attached as a single file rather than as separate PDFs,"
          },
          "attachPaymentSummary": {
            "type": "boolean",
            "description": "If set to True then the PaymentSummary report will be attached to the Email"
          },
          "attachP32": {
            "type": "boolean",
            "description": "If set to True then the P32 report will be attached to the email"
          },
          "attachP30": {
            "type": "boolean",
            "description": "If set to True then the P30 report will be attached to the email"
          },
          "attachGrossToNet": {
            "type": "boolean",
            "description": "If set to True then the GrossToNet report will be attached to the email"
          },
          "attachPensionContributions": {
            "type": "boolean",
            "description": "If set to True then the Pensions Contributions report will be attached to the email"
          },
          "attachCostAnalysis": {
            "type": "boolean",
            "description": "If set to True then the Cost Analysis report will be attached to the email"
          },
          "attachCostOfEmployment": {
            "type": "boolean",
            "description": "If set to True then the Cost of Employment report will be attached to the email"
          },
          "attachFullSummaryOfPay": {
            "type": "boolean",
            "description": "If set to True then the Full Summary Of Payment report will be attached to the email"
          },
          "attachBankPayments": {
            "type": "boolean",
            "description": "If set to True then the Bank Payments CSV file will be attached to the email"
          },
          "customSubject": {
            "maxLength": 200,
            "type": "string",
            "description": "If TemplateType is null then you can provide a subject line here to be used for the email",
            "nullable": true
          },
          "customBody": {
            "type": "string",
            "description": "If TemplateType is null then you can provide the body text here to be used for the email",
            "nullable": true
          },
          "customBody_IsHtml": {
            "type": "boolean",
            "description": "If the CustomBody is in HTML format, set this to true."
          },
          "childId": {
            "type": "string",
            "description": "This is nothing but the UniqueId of the model.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "PayrunEmails are sent automatically when a payrun has been finalised"
      },
      "PayrunPaymentsReport": {
        "type": "object",
        "properties": {
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayRunPayment"
            },
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "statusMessage": {
            "type": "string",
            "description": "[readonly] A message to elaborate on the Status",
            "nullable": true
          },
          "link": {
            "type": "string",
            "description": "[readonly]  If available, a link to the payments in an ExternalDataProvider",
            "nullable": true
          },
          "connectedExternalDataProvider": {
            "$ref": "#/components/schemas/ExternalDataProvider"
          },
          "allowRepost": {
            "type": "boolean"
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "After finalising a PayRun, employees need to actually be paid.\r\nThis model is returned by the Reports API and is used to provide details of a payment that needs to be made."
      },
      "PayrunPaymentsReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PayrunPaymentsReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "Payslip": {
        "type": "object",
        "properties": {
          "isClosed": {
            "type": "boolean",
            "description": "[readonly] Indicates if the Payrun has been finalised"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "string",
            "description": "[readonly] A description of the period that Payslip relates to.",
            "nullable": true
          },
          "from": {
            "type": "string",
            "description": "[readonly] The start date of the period this Payslip covers.",
            "format": "date"
          },
          "to": {
            "type": "string",
            "description": "[readonly] The end date of the period this Payslip covers.",
            "format": "date"
          },
          "paymentDate": {
            "type": "string",
            "description": "[readonly] The date the Employee will be paid on",
            "format": "date"
          },
          "note": {
            "type": "string",
            "description": "[readonly] Any note that should appear on the payslip",
            "nullable": true
          },
          "allowanceNote": {
            "type": "string",
            "description": "[readonly] Details of remaining allowance to show on payslip",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "logoUrl": {
            "type": "string",
            "description": "[readonly] The Logo to include on the payslip",
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "employerAddress": {
            "$ref": "#/components/schemas/Address"
          },
          "hmrcDetails": {
            "$ref": "#/components/schemas/HmrcDetails"
          },
          "payOptions": {
            "$ref": "#/components/schemas/PayOptions"
          },
          "employmentDetails": {
            "$ref": "#/components/schemas/EmploymentDetails"
          },
          "personalDetails": {
            "$ref": "#/components/schemas/PersonalDetails"
          },
          "totals": {
            "$ref": "#/components/schemas/PayRunTotals"
          },
          "totalsYtd": {
            "$ref": "#/components/schemas/PayRunTotals"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayslipLine"
            },
            "description": "[readonly] The lines to display on the Payslip",
            "nullable": true
          },
          "employerNi": {
            "type": "number",
            "description": "[readonly] The Employer NI Contribution amount",
            "format": "double"
          },
          "employerPensionContribs": {
            "type": "number",
            "description": "[readonly] The Employer Pension Contribution Amount",
            "format": "double"
          },
          "depts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringDecimalKeyValuePair"
            },
            "description": "The employees Department Membership(s) at the time the payrun was finalised",
            "nullable": true
          },
          "umbrellaPayment": {
            "$ref": "#/components/schemas/UmbrellaPayment"
          },
          "costCentres": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringDecimalKeyValuePair"
            },
            "description": "The employees Cost Centre Membership(s) only populated when creating journals",
            "nullable": true
          },
          "employeeRoleAnalysisCategoryCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeRoleAnalysisCategoryCode"
            },
            "description": "The EmployeeRoleAnalysisCategoryCodes only populated when creating journals",
            "nullable": true
          },
          "employeeCostCentres": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeCostCentre"
            },
            "description": "The Employee Cost Centre Membership(s) by role only populated when creating journals",
            "nullable": true
          },
          "departmentMemberships": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DepartmentMembership"
            },
            "description": "The Employee Department Membership(s) by role only populated when creating journals",
            "nullable": true
          },
          "pensionContributionsByRole": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "The Pension Employer contribution by role only populated when creating journals",
            "nullable": true
          },
          "employerPensionContributions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployerPensionContribution"
            },
            "description": "[readonly] The list of Employer Pension Contribution(s)",
            "nullable": true
          },
          "employeePensionContributions": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/DecimalDecimalBooleanPensionRuleValueTuple"
            },
            "description": "Dictionary of Pension Contributions(s) Keyed on PensionId containing Employee Pension and AVC Contribution(s) Bfd, AVC indicator and pension rule",
            "nullable": true
          },
          "originalPayRunPaymentDate": {
            "type": "string",
            "description": "Original PayRun's Payment Date",
            "format": "date",
            "nullable": true
          },
          "isSupplementary": {
            "type": "boolean",
            "description": "Indicates if this payslip is for a supplementary pay run"
          }
        },
        "additionalProperties": false,
        "description": "If you don't want to use our customisable PDFs for Payslips then you can retrieve the raw data used to create a Payslip.\r\nThis is the model you will be provided with for each employee."
      },
      "PayslipCustomisation": {
        "type": "object",
        "properties": {
          "custom": {
            "type": "boolean",
            "description": "Whether or not you are customising the Payslip.\r\nThis should always be true if you are providing any other values."
          },
          "includeLogo": {
            "type": "boolean",
            "description": "Whether or not to include the employer logo on the payslip."
          },
          "customCssOption": {
            "$ref": "#/components/schemas/ReportCustomCssOption"
          },
          "customCss": {
            "maxLength": 2500,
            "type": "string",
            "nullable": true
          },
          "removeYtd": {
            "type": "boolean",
            "description": "Whether or not to remove the YTD column"
          },
          "includeEmployerAddress": {
            "type": "boolean",
            "description": "Whether or not to include the employer address"
          },
          "useUmbrellaFormat": {
            "type": "boolean",
            "description": "If true then the format the payslip will include details of the Umbrella Payment as well as employer costs"
          },
          "filename": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "includeDepartment": {
            "type": "boolean",
            "description": "Whether or not to include the primary department of the employee on the payslip"
          },
          "includeHealthAndSocialCareMessage": {
            "type": "boolean",
            "description": "Whether or not to include health and social car message"
          },
          "includeBenefits": {
            "type": "boolean",
            "description": "Whether or not to include any payrolled benefits"
          },
          "removePensionYtd": {
            "type": "boolean",
            "description": "Whether or not to remove the pension YTD column"
          },
          "paperSize": {
            "$ref": "#/components/schemas/PdfPaperSize"
          },
          "orientation": {
            "$ref": "#/components/schemas/PdfPaperOrientation"
          },
          "margins": {
            "$ref": "#/components/schemas/PdfPaperMargins"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent any customisations you make to the look of Payslip PDFs.\r\nThis is covered in detail in the Guides section."
      },
      "PayslipLine": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PayslipLineType"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "secondaryDescription": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "double"
          },
          "multiplier": {
            "type": "number",
            "description": "[readonly] If the Code is a multiplier code then this is the multiplier. Value has already been calculated so this is just for reference",
            "format": "double",
            "nullable": true
          },
          "attachmentOrderId": {
            "type": "string",
            "description": "[readonly] The Id of the associated AttachmentOrder. Only included if the Code is AEO",
            "format": "uuid",
            "nullable": true
          },
          "pensionId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Pension. Only included if the Code is PENSION, PENSIONSS or PENSIONRAS",
            "format": "uuid",
            "nullable": true
          },
          "loanId": {
            "type": "string",
            "description": "[readonly] The Id of the associated Loan, if any.",
            "format": "uuid",
            "nullable": true
          },
          "currencySymbol": {
            "type": "string",
            "nullable": true
          },
          "formattedValue": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "isNetToGross": {
            "type": "boolean",
            "description": "If the PayLine is a fixed ammount addition without multiplier then this property may be set to true so that the amount of the addition to be considered a take home pay target."
          },
          "targetNetToGrossValue": {
            "type": "number",
            "description": "The orginal net fixed addition amount that is considered to be a take home pay target.",
            "format": "double",
            "nullable": true
          },
          "leaveId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "roleId": {
            "type": "string",
            "description": "The employee role which is associated with this payslip line.\r\nIf set to null, the payslip line is not related with a role.",
            "format": "uuid",
            "nullable": true
          },
          "isAutoCalculatedBackPayLine": {
            "type": "boolean"
          },
          "isAutomaticBackPay": {
            "type": "boolean"
          },
          "hasSecondaryDescription": {
            "type": "boolean",
            "readOnly": true
          },
          "contributesToBasicPay": {
            "type": "boolean"
          },
          "isNotional": {
            "type": "boolean",
            "description": "Determines whether the transaction involves non-monetary benefits for payroll processing, potentially subject to tax and National Insurance"
          }
        },
        "additionalProperties": false
      },
      "PayslipLineType": {
        "enum": [
          "BasicPay",
          "Gross",
          "Net",
          "Nic",
          "Tax",
          "Cis"
        ],
        "type": "string"
      },
      "PayslipReleasePaymentDateRule": {
        "enum": [
          "WorkingDays",
          "CalendarDays"
        ],
        "type": "string"
      },
      "PayslipReleaseTime": {
        "enum": [
          "OneMinutePastMidnight",
          "OneAm",
          "TwoAm",
          "ThreeAm",
          "FourAm",
          "FiveAm",
          "SixAm",
          "SevenAm",
          "EightAm",
          "NineAm",
          "TenAm",
          "ElevenAm",
          "TwelveNoon",
          "OnePm",
          "TwoPm",
          "ThreePm",
          "FourPm",
          "FivePm",
          "SixPm",
          "SevenPm",
          "EightPm",
          "NinePm",
          "TenPm",
          "ElevenPm",
          "OneMinuteToMidnight"
        ],
        "type": "string"
      },
      "PayslipReleaseType": {
        "enum": [
          "Immediately",
          "Scheduled"
        ],
        "type": "string"
      },
      "PayslipReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/Payslip"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PdfPaperMargins": {
        "type": "object",
        "properties": {
          "top": {
            "type": "number",
            "format": "double"
          },
          "right": {
            "type": "number",
            "format": "double"
          },
          "bottom": {
            "type": "number",
            "format": "double"
          },
          "left": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PdfPaperOrientation": {
        "enum": [
          "Landscape",
          "Portrait"
        ],
        "type": "string"
      },
      "PdfPaperSize": {
        "enum": [
          "Letter",
          "LetterSmall",
          "A4",
          "A4Small",
          "A5"
        ],
        "type": "string"
      },
      "PdfPasswordType": {
        "enum": [
          "InitialsAndDob",
          "NiNumber",
          "Custom"
        ],
        "type": "string"
      },
      "Pension": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "contributionLevelType": {
            "$ref": "#/components/schemas/PensionContributionLevelType"
          },
          "endDate": {
            "type": "string",
            "description": "The date the employee left the scheme",
            "format": "date",
            "nullable": true
          },
          "endReason": {
            "$ref": "#/components/schemas/PensionEndReason"
          },
          "joinReason": {
            "$ref": "#/components/schemas/PensionJoinReason"
          },
          "startPayRunEntryId": {
            "type": "integer",
            "description": "[readonly] Holds the Id for the payroll that the employee joined the scheme",
            "format": "int32",
            "nullable": true
          },
          "endPayRunEntryId": {
            "type": "integer",
            "description": "[readonly] Holds the Id for the payroll that the employee left the scheme",
            "format": "int32",
            "nullable": true
          },
          "startReportingType": {
            "$ref": "#/components/schemas/PensionReportingType"
          },
          "endReportingType": {
            "$ref": "#/components/schemas/PensionReportingType"
          },
          "pensionOpeningBalances": {
            "$ref": "#/components/schemas/PensionOpeningBalances"
          },
          "reasonForLeaving": {
            "maxLength": 100,
            "type": "string",
            "description": "If a value is provided for EndDate then this is the reason for leaving the employee left the scheme",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          },
          "pensionSchemeId": {
            "type": "string",
            "format": "uuid"
          },
          "pensionScheme": {
            "$ref": "#/components/schemas/PensionScheme"
          },
          "workerGroupId": {
            "type": "string",
            "format": "uuid"
          },
          "workerGroup": {
            "$ref": "#/components/schemas/WorkerGroup"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "memberReferenceNumber": {
            "maxLength": 25,
            "type": "string",
            "nullable": true
          },
          "overrideContributions": {
            "type": "boolean",
            "description": "If this is set to true then the Contributions levels set for the WorkerGroup will be replaced with the values provided here"
          },
          "employeeContribution": {
            "type": "number",
            "description": "The amount the employee contributes towards the pension. Could be a percentage or a fixed amount depending on EmployeeContributionIsPercentage.\r\nThis is read-only if OverrideContributions is false",
            "format": "double"
          },
          "employeeContributionIsPercentage": {
            "type": "boolean",
            "description": "Determines whether the Value of the EmployeeContribution is a fixed amount or a percentage,"
          },
          "employerContribution": {
            "type": "number",
            "description": "The amount the employer contributes towards the pension. Could be a percentage or a fixed amount depending on EmployerContributionIsPercentage.\r\nThis is read-only if OverrideContributions is false",
            "format": "double"
          },
          "employerContributionIsPercentage": {
            "type": "boolean",
            "description": "Determines whether the Value of the EmployerContribution is a fixed amount or a percentage,"
          },
          "employerContributionTopUpPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employee Contribution",
            "format": "double"
          },
          "isAeQualifyingScheme": {
            "type": "boolean",
            "description": "[readonly] Whether or not the associated PensionScheme is a Qualifying Scheme for AutoEnrolment"
          },
          "isTeachersPension": {
            "type": "boolean",
            "description": "[readonly] Whether or not the associated PensionScheme is a Teachers' Pension (determined by its CsvFormat)"
          },
          "aeStatusAtJoining": {
            "$ref": "#/components/schemas/AeStatus"
          },
          "externalEmployeeId": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "additionalVoluntaryContribution": {
            "type": "number",
            "description": "Any additional voluntary amount the employer contributes towards the pension. Could be a percentage or a fixed amount depending on AvcIsPercentage.",
            "format": "double"
          },
          "avcIsPercentage": {
            "type": "boolean",
            "description": "Determines whether the Value of the Additional Voluntary Contribution is a fixed amount or a percentage,"
          },
          "exitViaProvider": {
            "type": "boolean",
            "readOnly": true
          },
          "teachersPensionDetails": {
            "$ref": "#/components/schemas/TeachersPensionDetails"
          },
          "forcedTier": {
            "type": "string",
            "description": "If the WorkerGroup ContributionLevelType is a Tiered Scheme then you can specify the name of the tier to force the employee on to.\r\nIf none is specified then the Tier is determined by the earnings in the period",
            "nullable": true
          },
          "forceEnrolment": {
            "type": "boolean",
            "description": "If the PensionScheme is connected to an ExternalDataProvider that supports enrolment then setting this to true will force this employee to be enrolled with the next submission."
          },
          "employerContributionIncludesNiSaving": {
            "type": "boolean",
            "description": "Employer Contribution includes the Employers NI saving"
          },
          "employerContributionNiSavingPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employers NI saving",
            "format": "double"
          },
          "fiftyFiftySchemeMember": {
            "type": "boolean",
            "description": "if an employee as a member of the 50/50 LGPS scheme, they can enable contribution to 50% of the normal contributions."
          },
          "associatedEmployeeRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "The list of employee roles associated with the pension membership",
            "nullable": true
          },
          "autoEnrolled": {
            "type": "boolean",
            "description": "[readonly] Is True if the employee joined this Pension due to an AutoEnrolment action"
          }
        },
        "additionalProperties": false
      },
      "PensionAdministrator": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "email": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "telephone": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PensionContributionLevelType": {
        "enum": [
          "UserDefined",
          "StatutoryMinimum",
          "Nhs2015",
          "TeachersPensionEnglandAndWales",
          "LgpsEnglandAndWales",
          "TpFasterAccrual",
          "TpAdditionalPensionContributions",
          "TpActuariallyAdjustedBenefits",
          "TpFamilyBenefits",
          "tpPastAddedYears",
          "tpHigherSalaries",
          "tpPreston",
          "LgpsAdditionalPensionContributions",
          "LgpsSharedAdditionalPensionContributions",
          "LgpsAdditionalRegularContributions",
          "LgpsAddedYearsContributions",
          "LgpsSharedAdditionalPensionLumpSump",
          "LgpsPartTimeBuyBack",
          "PrudentialAVC",
          "tpElectedFurtherEmployment",
          "AptisCashIsa",
          "AptisStocksSharesIsa",
          "AptisInvestmentAccount"
        ],
        "type": "string"
      },
      "PensionContributionsSubmission": {
        "type": "object",
        "properties": {
          "employerId": {
            "type": "integer",
            "format": "int32"
          },
          "payRunId": {
            "type": "integer",
            "format": "int32"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "schemeId": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "statusMessage": {
            "type": "string",
            "nullable": true
          },
          "submissionData": {
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "This model is used to track submission of Pension Contributions to an external data provider."
      },
      "PensionCsvFormat": {
        "enum": [
          "Papdis",
          "Nest",
          "NowPensions",
          "TeachersPensionMdc",
          "TeachersPensionMcr",
          "ScottishWidowsAssistMe",
          "Aviva",
          "AvivaEnrolment",
          "ScottishWidowsWorkplace",
          "Aegon",
          "ScottishWidowsWorkplaceEnrolment",
          "AegonEnrolment",
          "StandardLifeWorkplaceHub",
          "PeoplesPension",
          "StandardLifeWorkplaceHubEnrolment",
          "PrudentialAvc",
          "LgpsCivicaUpm",
          "LgpsIConnect",
          "StandardLifeGpz",
          "StandardLifeGpzEnrolment",
          "Aptis",
          "AptisEnrolment",
          "NestEnrolment",
          "TruePotential",
          "TruePotentialEnrolment",
          "AegonSmartEnrol"
        ],
        "type": "string"
      },
      "PensionEndReason": {
        "enum": [
          "OptOut",
          "CeasedMembership",
          "Leaver"
        ],
        "type": "string"
      },
      "PensionInitialEnrolmentType": {
        "enum": [
          "Auto",
          "Contractual",
          "Manual"
        ],
        "type": "string"
      },
      "PensionJoinReason": {
        "enum": [
          "Automatic",
          "OptIn",
          "VoluntaryJoiner",
          "ContractualPension",
          "Enrol"
        ],
        "type": "string"
      },
      "PensionMembershipReportLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "description": "Payroll code of the employee",
            "nullable": true
          },
          "pensionScheme": {
            "type": "string",
            "description": "Employee pension scheme",
            "nullable": true
          },
          "workerGroup": {
            "type": "string",
            "description": "The WorkerGroup of the employee pension scheme",
            "nullable": true
          },
          "joinDate": {
            "type": "string",
            "description": "The Join Date of the employee",
            "nullable": true
          },
          "joinReason": {
            "$ref": "#/components/schemas/PensionJoinReason"
          },
          "isPensionJoinerActionReported": {
            "type": "boolean",
            "description": "Indicates whether the pension joiner  action is reported."
          },
          "endDate": {
            "type": "string",
            "description": "Pension End Date",
            "nullable": true
          },
          "endReason": {
            "$ref": "#/components/schemas/PensionEndReason"
          },
          "isPensionLeaverActionReported": {
            "type": "boolean",
            "description": "Indicates whether the pension leaver  action is reported.",
            "nullable": true
          },
          "aeStatusAtJoining": {
            "$ref": "#/components/schemas/AeStatus"
          },
          "roleRefs": {
            "type": "string",
            "description": "role references of employee",
            "nullable": true
          },
          "pensionEmployeeContribution": {
            "type": "number",
            "description": "Pension Employee Contribution",
            "format": "double",
            "nullable": true
          },
          "isEmployeeContributionPercentage": {
            "type": "boolean",
            "description": "Indicates whether the EmployeeContribution is expressed as a percentage."
          },
          "pensionTiers": {
            "type": "string",
            "description": "Pension Tiers of the employee",
            "nullable": true
          },
          "pensionAVCContribution": {
            "type": "number",
            "description": "Pension AVC Contribution of employee",
            "format": "double",
            "nullable": true
          },
          "isAvcPercentage": {
            "type": "boolean",
            "description": "Indicates whether the AvcContribution is expressed as a percentage."
          },
          "pensionEmployerContribution": {
            "type": "number",
            "description": "Employer Pension Contribution",
            "format": "double",
            "nullable": true
          },
          "isEmployerContributionPercentage": {
            "type": "boolean",
            "description": "Indicates whether the EmployerContribution is expressed as a percentage."
          },
          "pensionMembershipNo": {
            "type": "string",
            "description": "Pension Membership Number",
            "nullable": true
          },
          "mcrRoleID1": {
            "type": "string",
            "description": "MCR Role ID1 for teachers pension",
            "nullable": true
          },
          "mcrRoleID2": {
            "type": "string",
            "description": "MCR Role ID2 for teachers pension",
            "nullable": true
          },
          "isHalfContributionMember": {
            "type": "boolean",
            "description": "50/50 membership",
            "nullable": true
          },
          "tpAdminNino": {
            "type": "string",
            "description": "Teachers Pension Admin Ni Number",
            "nullable": true
          },
          "pensionableEarningsYTD": {
            "type": "number",
            "description": "Pensionable earning year to date",
            "format": "double",
            "nullable": true
          },
          "pensionablePayYTD": {
            "type": "number",
            "description": "Pensionable Pay year to date",
            "format": "double",
            "nullable": true
          },
          "employeePensionYTD": {
            "type": "number",
            "description": "Employee pension year to date",
            "format": "double",
            "nullable": true
          },
          "avcPensionYTD": {
            "type": "number",
            "description": "Additional Voluntary Contribution YTD",
            "format": "double",
            "nullable": true
          },
          "employerPensionYTD": {
            "type": "number",
            "description": "Employer pension year to date",
            "format": "double",
            "nullable": true
          },
          "assumedPensionablePayYTD": {
            "type": "number",
            "description": "Assumed pensionable pay year to date",
            "format": "double",
            "nullable": true
          },
          "reasonForLeaving": {
            "type": "string",
            "description": "Reason the employee left the scheme",
            "nullable": true
          },
          "pensionId": {
            "type": "string",
            "description": "Pension Id",
            "format": "uuid"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PensionMembershipsReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PensionMembershipReportLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PensionMembershipsReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/PensionMembershipsReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "PensionOpeningBalances": {
        "type": "object",
        "properties": {
          "pensionableEarnings": {
            "pattern": "^[\\d\\.\\,]{1,8}([\\.\\,]\\d{0,2})?$",
            "type": "number",
            "description": "Opening balances for pensionable earnings",
            "format": "double"
          },
          "pensionablePay": {
            "pattern": "^[\\d\\.\\,]{1,8}([\\.\\,]\\d{0,2})?$",
            "type": "number",
            "description": "Opening balances for pensionable pay",
            "format": "double"
          },
          "employeePensionContribution": {
            "pattern": "^[\\d\\.\\,]{1,8}([\\.\\,]\\d{0,2})?$",
            "type": "number",
            "description": "Opening balances for employee pension contribution",
            "format": "double"
          },
          "employeePensionContributionAvc": {
            "pattern": "^[\\d\\.\\,]{1,8}([\\.\\,]\\d{0,2})?$",
            "type": "number",
            "description": "Opening balances for employee pension contribution avc",
            "format": "double"
          },
          "employerPensionContribution": {
            "pattern": "^[\\d\\.\\,]{1,8}([\\.\\,]\\d{0,2})?$",
            "type": "number",
            "description": "Opening balances for employer pension contribution",
            "format": "double"
          },
          "assumedPensionablePay": {
            "pattern": "^[\\d\\.\\,]{1,8}([\\.\\,]\\d{0,2})?$",
            "type": "number",
            "description": "Opening balances for assumed pensionable pay",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PensionPayCode": {
        "enum": [
          "Default",
          "CustomPayCodes",
          "PayCodeSets"
        ],
        "type": "string"
      },
      "PensionProvider": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "accountNo": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "portal": {
            "maxLength": 100,
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "website": {
            "maxLength": 100,
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "telephone": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "papdisVersion": {
            "$ref": "#/components/schemas/PapdisVersion"
          },
          "papdisProviderId": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "papdisEmployerId": {
            "maxLength": 40,
            "type": "string",
            "nullable": true
          },
          "csvFormat": {
            "$ref": "#/components/schemas/PensionCsvFormat"
          },
          "excludeNilPaidFromContributions": {
            "type": "boolean",
            "description": "If we're sending contributions to an external provider then we'll include all employees that were on the payrun.\r\nIf you want to exclude employees that don't have any contributions to report then set this to true."
          },
          "payPeriodDateAdjustment": {
            "type": "integer",
            "description": "If you need to adjust the reported dates of the contributions then you can do so by setting a non-zero value here.\r\nA negative value of will move the date back in time.",
            "format": "int32"
          },
          "miscBoolean1": {
            "type": "boolean",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it indicates whether or not contributions are reported as \"Tax Weekly/Monthly\" rather than just \"Weekly/Monthly\""
          },
          "miscBoolean2": {
            "type": "boolean",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it indicates whether or not to approve payments after submitting contributions"
          },
          "miscString1": {
            "maxLength": 50,
            "type": "string",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.\r\nFor Nest, it dictates the PaymentSource.",
            "nullable": true
          },
          "miscString2": {
            "maxLength": 50,
            "type": "string",
            "description": "This field has different uses dependent on the ExternalDataProvider, if any.",
            "nullable": true
          },
          "optOutWindow": {
            "type": "integer",
            "description": "The number of days or months that an employee has to Opt out after being enrolled",
            "format": "int32"
          },
          "optOutWindowIsMonths": {
            "type": "boolean",
            "description": "Determines whether the value given for OptOutWindow is in Months (true) or days (false)"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PensionRefund": {
        "required": [
          "additionalVoluntaryContribution",
          "assumedPensionablePay",
          "employeeRefund",
          "employerRefund",
          "isPreviousTaxYearRefund",
          "pensionableEarning",
          "pensionablePay"
        ],
        "type": "object",
        "properties": {
          "employeeRefund": {
            "type": "number",
            "format": "double"
          },
          "employerRefund": {
            "type": "number",
            "format": "double"
          },
          "pensionSchemeUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "pensionUniqueId": {
            "type": "string",
            "format": "uuid"
          },
          "payInCurrentPayRun": {
            "type": "boolean"
          },
          "payRun": {
            "$ref": "#/components/schemas/Item"
          },
          "pensionableEarning": {
            "type": "number",
            "format": "double"
          },
          "pensionablePay": {
            "type": "number",
            "format": "double"
          },
          "additionalVoluntaryContribution": {
            "type": "number",
            "format": "double"
          },
          "assumedPensionablePay": {
            "type": "number",
            "format": "double"
          },
          "isPreviousTaxYearRefund": {
            "type": "boolean"
          },
          "tierName": {
            "minLength": 1,
            "type": "string",
            "nullable": true
          },
          "tierRate": {
            "maximum": 0.999,
            "minimum": 0.001,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent a Pension Refund"
      },
      "PensionReportingType": {
        "enum": [
          "UsePayRun",
          "UseAssessment",
          "AlreadyReported",
          "UseExisting"
        ],
        "type": "string"
      },
      "PensionRule": {
        "enum": [
          "ReliefAtSource",
          "SalarySacrifice",
          "NetPayArrangement"
        ],
        "type": "string"
      },
      "PensionScheme": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/PensionProvider"
          },
          "administrator": {
            "$ref": "#/components/schemas/PensionAdministrator"
          },
          "pensionRule": {
            "$ref": "#/components/schemas/PensionRule"
          },
          "qualifyingScheme": {
            "type": "boolean",
            "description": "Set to true if this is a Qualifying Scheme for Auto Enrolment"
          },
          "disableAeLetters": {
            "type": "boolean",
            "description": "Set to true if the provider deals with AutoEnrolment Letters and therefore the system should not generate them"
          },
          "subtractBasicRateTax": {
            "type": "boolean"
          },
          "payMethod": {
            "$ref": "#/components/schemas/PayMethod"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/BankDetails"
          },
          "initialEnrolmentType": {
            "$ref": "#/components/schemas/PensionInitialEnrolmentType"
          },
          "singleEmploymentRelationship": {
            "$ref": "#/components/schemas/PensionSingleEmploymentRelationship"
          },
          "useCustomPayCodes": {
            "type": "boolean",
            "description": "If set to true then rather than using the setting on the PayCode to determine if the pay is pensionable\r\nwe'll instead treat it as pensionable if the Code is included in CustomPayCodes"
          },
          "useCustomPayCodesForTierablePay": {
            "type": "boolean",
            "description": "If set to true then rather than using the setting on the PayCode to determine if the pay is tierable\r\nwe'll instead treat it as tierable if the Code is included in TierablePayCustomPayCodes"
          },
          "customPayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If UseCustomPayCodes is set to true then this contains a list of PayCodes.Code\r\nthat we'll treat as being pensionable.",
            "nullable": true
          },
          "tierablePayCustomPayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If UseCustomPayCodesForTierablePay is set to true then this contains a list of PayCodes.Code\r\nthat we'll treat as being tierable.",
            "nullable": true
          },
          "workerGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkerGroup"
            },
            "description": "A list of WorkerGroups for this Pension. There must always be at least one WorkerGroup",
            "nullable": true
          },
          "externalDataProviderId": {
            "$ref": "#/components/schemas/ExternalDataProviderId"
          },
          "externalDataCompany": {
            "$ref": "#/components/schemas/ExternalDataCompany"
          },
          "payCodeType": {
            "$ref": "#/components/schemas/PensionPayCode"
          },
          "tierablePayPayCodeType": {
            "$ref": "#/components/schemas/PensionPayCode"
          },
          "payCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "tierablePayPayCodeSetUniqueId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "paymentDateRule": {
            "$ref": "#/components/schemas/PaymentDateRule"
          },
          "paymentDateDayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "paymentDateDayOfMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reportOptionsLgpsIConnect": {
            "$ref": "#/components/schemas/PensionSchemeReportOptionsLgpsIConnect"
          },
          "reportOptionsLgpsCivicaUpm": {
            "$ref": "#/components/schemas/PensionSchemeReportOptionsLgpsCivicaUpm"
          },
          "deficitValueOrdinal": {
            "type": "integer",
            "description": "The Ordinal used to identify the PaySchedule which the Deficit will be against",
            "format": "int32",
            "nullable": true
          },
          "deficitValue": {
            "type": "number",
            "description": "The Defict value that will be deducted in a PaySchedule",
            "format": "double",
            "nullable": true
          },
          "includeDeficitValue": {
            "type": "boolean",
            "description": "Set to true if this a Deficit Payment needs to be assigned to a PaySchedule"
          },
          "deficitValuePayPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "nominalCodeMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PensionSchemeNominalCodeMapping"
            },
            "description": "The PensionSchemeNominalCodeMappings used to map the PayCodes to a PensionScheme for the journal configuration",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PensionSchemeNominalCodeMapping": {
        "type": "object",
        "properties": {
          "nominalCode": {
            "maxLength": 500,
            "type": "string",
            "description": "Nominal Code for pension scheme",
            "nullable": true
          },
          "nominalName": {
            "maxLength": 100,
            "type": "string",
            "description": "Nominal Name",
            "nullable": true
          },
          "journalNarrative": {
            "maxLength": 500,
            "type": "string",
            "description": "Journal narrative description.",
            "nullable": true
          },
          "payCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PensionSchemeReportOptionsLgpsCivicaUpm": {
        "type": "object",
        "properties": {
          "payrollNumber": {
            "$ref": "#/components/schemas/LgpsCivicaPayrollNumber"
          },
          "casualHours": {
            "$ref": "#/components/schemas/LgpsCivicaCasualHours"
          },
          "omitHeaderLine": {
            "type": "boolean"
          },
          "includeFolderNo": {
            "type": "boolean"
          },
          "excludeSchoolEmployerName": {
            "type": "boolean"
          },
          "addressesForNewJoinersOnly": {
            "type": "boolean"
          },
          "proRatePtHoursWeeksWorked": {
            "type": "boolean"
          },
          "fullTimeHoursAsOneHundred": {
            "type": "boolean"
          },
          "includeWeeksWorkedColumns": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PensionSchemeReportOptionsLgpsIConnect": {
        "type": "object",
        "properties": {
          "fileType": {
            "$ref": "#/components/schemas/LgpsIConnectFileType"
          },
          "payrollReference1": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "payrollReference2": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "payrollReference3": {
            "$ref": "#/components/schemas/LgpsIConnectPayrollReference"
          },
          "populateEmailAddress": {
            "type": "boolean"
          },
          "populateTelephoneNumber": {
            "type": "boolean"
          },
          "populateMobileNumber": {
            "type": "boolean"
          },
          "populateWorksPlaceName": {
            "type": "boolean"
          },
          "populateWorksAddress": {
            "type": "boolean"
          },
          "populateWorksEmailAddress": {
            "type": "boolean"
          },
          "includeEmploymentBreaks": {
            "type": "boolean"
          },
          "breakReasonSmpIndicatorOnly": {
            "type": "boolean"
          },
          "populateMaritalStatus": {
            "type": "boolean"
          },
          "includeAeQualifyingEarnings": {
            "type": "boolean"
          },
          "proRatePtHoursByTermTimeWeeks": {
            "type": "boolean"
          },
          "ignoreTermTimeWeeksForFteFinalPay": {
            "type": "boolean"
          },
          "showFteAnnualSalaryForFteFinalPay": {
            "type": "boolean"
          },
          "casualStaffHoursAsOne": {
            "type": "boolean"
          },
          "casualStaffIndicatorAsY": {
            "type": "boolean"
          },
          "ignoreHours": {
            "type": "boolean"
          },
          "forceUpperCase": {
            "type": "boolean"
          },
          "salaryType": {
            "$ref": "#/components/schemas/LgpsIConnectSalaryType"
          },
          "customText": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PensionSingleEmploymentRelationship": {
        "enum": [
          "AssessJointly",
          "AssessRolesSeparately"
        ],
        "type": "string"
      },
      "PensionSummary": {
        "type": "object",
        "properties": {
          "pensionId": {
            "type": "string",
            "description": "[readonly] The Id of the Pension.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "[readonly] The name of the PensionScheme to which contributions have been made.",
            "nullable": true
          },
          "pensionSchemeId": {
            "type": "string",
            "description": "[readonly] The Id of the PensionScheme.",
            "format": "uuid"
          },
          "startDate": {
            "type": "string",
            "description": "[readonly] Pension Start Date",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "Pension End Date",
            "format": "date",
            "nullable": true
          },
          "workerGroupId": {
            "type": "string",
            "description": "[readonly] The Id of the WorkerGroup.",
            "format": "uuid"
          },
          "pensionRule": {
            "$ref": "#/components/schemas/PensionRule"
          },
          "subtractedBasicRateTax": {
            "type": "boolean",
            "description": "[readonly] The SubtractedBasicRateTax applied from the PensionScheme SubtractBasicRateTax."
          },
          "papdisPensionProviderId": {
            "type": "string",
            "description": "[readonly] Papdis information from the PensionScheme",
            "nullable": true
          },
          "papdisEmployerId": {
            "type": "string",
            "description": "[readonly] Papdis information from the PensionScheme",
            "nullable": true
          },
          "employeePensionContributionMultiplier": {
            "type": "number",
            "description": "[readonly] If the PensionScheme is set to SubtractBasicRateTax then this value  is used to reduce the contribution amount.\r\nOtherwise it is set as 1.",
            "format": "double"
          },
          "additionalVoluntaryContribution": {
            "type": "number",
            "description": "[readonly] Any Additional Voluntary Contribution the Employee has chosen to make\r\nOtherwise it is set as 1.",
            "format": "double"
          },
          "avcIsPercentage": {
            "type": "boolean",
            "description": "[readonly] Determines whether the Value of the Additional Voluntary Contribution is a fixed amount or a percentage,"
          },
          "autoEnrolled": {
            "type": "boolean",
            "description": "[readonly] Any Additional Voluntary Contribution the Employee has chosen to make\r\nOtherwise it is set as 1."
          },
          "workerGroup": {
            "$ref": "#/components/schemas/WorkerGroup"
          },
          "forcedTier": {
            "type": "string",
            "description": "[readonly] If the WorkerGroup ContributionLevelType is a Tiered Scheme then the name of the tier to force the employee on to may be specified.\r\nIf none is specified then the Tier is determined by the earnings in the period",
            "nullable": true
          },
          "tiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TieredPensionRate"
            },
            "nullable": true
          },
          "assumedPensionablePay": {
            "type": "number",
            "description": "[readonly] Assumed Pensionable Pay. If the employee is receiving any Statutory Leave that has an AssumedPensionablePay value set\r\nthen it'll be shown here.",
            "format": "double",
            "nullable": true
          },
          "pensionablePayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[readonly] If the pension scheme is set to override the Pensionale PayCodes, then this is what they've been set to.",
            "nullable": true
          },
          "tierablePayPayCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[readonly] If the pension scheme is set to override the TierablePay PayCodes, then this is what they've been set to.",
            "nullable": true
          },
          "isHalfContributionMember": {
            "type": "boolean",
            "description": "if an employee as a member of the 50/50 LGPS scheme, they can enable contribution to 50% of the normal contributions."
          },
          "pensionableEarnings": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that is subject to Pension Deductions.\r\nIf the Pension Scheme uses Qualifying Earnings (upper and lower limits) then this value is before those are applied\r\nApplied only if an employee has more than one pension assigned to them",
            "format": "double"
          },
          "pensionablePay": {
            "type": "number",
            "description": "[readonly] The amount of the Gross that pension calculations are based on after taking into account Upper and Lower Limits for the WorkerGroup.\r\nApplied only if an employee has more than one pension assigned to them",
            "format": "double"
          },
          "nonTierablePay": {
            "type": "number",
            "description": "[readonly] The value of any pay that shouldn't count towards determining a pension tier.",
            "format": "double"
          },
          "employeePensionContribution": {
            "type": "number",
            "description": "[readonly] The value of the Pension Contribution being made by this Employee, excluding any Additional Voluntary Contributions",
            "format": "double"
          },
          "employeePensionContributionAvc": {
            "type": "number",
            "description": "[readonly] The value of the Pension Contribution being made by this Employee as an Additional Voluntary Contribution",
            "format": "double"
          },
          "employerPensionContribution": {
            "type": "number",
            "description": "[readonly] The value of the Pension Contribution being made by the Employer for this Employee",
            "format": "double"
          },
          "isForEndedPension": {
            "type": "boolean",
            "description": "[readonly] Determines whether the pension summary is related to a pension that has ended or not"
          },
          "treatAsWhenPaidForBackPay": {
            "type": "boolean",
            "description": "[readonly] Determines whether the pension summary should be treated as when paid when the earnings are based only on back pay"
          },
          "associatedEmployeeRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "nullable": true
          },
          "isTeachersPension": {
            "type": "boolean"
          },
          "notionalPay": {
            "type": "number",
            "description": "Pay value based on regular pay lines and the pension's associated roles\r\nSet before any adjustments for things like stat payments",
            "format": "double"
          },
          "pensionableEarningsBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date amount of the Gross that is subject to Pension Deductions.\r\nApplied only if an employee has more than one pension assigned to them",
            "format": "double"
          },
          "pensionablePayBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date amount of the Gross that pension calculations are based on after taking into account Upper and Lower Limits for the WorkerGroup.\r\nApplied only if an employee has more than one pension assigned to them",
            "format": "double"
          },
          "employeePensionContributionBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date value of the Pension Contribution being made by this Employee, excluding any Additional Voluntary Contributions",
            "format": "double"
          },
          "assumedPensionablePayBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date value of Assumed Pensionable Pay. If the employee is receiving any Statutory Leave that has an AssumedPensionablePay value set\r\nthen it'll be shown here.",
            "format": "double",
            "nullable": true
          },
          "employerPensionContributionBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date value of the Pension Contribution being made by the Employer for this Employee",
            "format": "double"
          },
          "employeePensionContributionAvcBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date value of the Pension Contribution being made by this Employee as an Additional Voluntary Contribution",
            "format": "double"
          },
          "leaveDaysUnderHalfPay": {
            "type": "integer",
            "description": "The numer of leave days where less than half the normal pay is received",
            "format": "int32"
          },
          "notionalPayDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeaveNotionalPayDetails"
            },
            "description": "Notional pay details based on every occupational or custom leave affecting a teachers pension summary",
            "nullable": true
          },
          "nonPensionableStatutoryPay": {
            "type": "number",
            "description": "Non pensionable statutory pay",
            "format": "double"
          },
          "nonPensionableStatutoryPays": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "description": "Non pensionable statutory pay per leave",
            "nullable": true
          },
          "whenEarnedPensionSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PensionSummary"
            },
            "description": "The list of pension summaries created on the base of when earned additions' and deductions' pension calculations for back paid periods",
            "nullable": true
          },
          "periodFrom": {
            "type": "string",
            "description": "Nullable DateTime property \"PeriodFrom\" to store the start date of the PayPeriod the current PensionSummary is attributable to.\r\nApplicable only for when the pension summary is created on the base of when earned additions' and deductions' pension calculations for back paid periods",
            "format": "date",
            "nullable": true
          },
          "periodTo": {
            "type": "string",
            "description": "Nullable DateTime property \"PeriodTo\" to store the start date of the PayPeriod the current PensionSummary is attributable to.\r\nApplicable only for when the pension summary is created on the base of when earned additions' and deductions' pension calculations for back paid periods",
            "format": "date",
            "nullable": true
          },
          "contributionCalculationDate": {
            "type": "string",
            "description": "Nullable DateTime property \"ContributionCalculationDate\" to store the date of the latest earned date on the back pay lines when processing when earned pension summaries on a payment after leaving.\r\nApplicable only for when the pension summary is created on the base of when earned additions' and deductions' pension calculations for back paid periods and the pay run entry is marked as payment after leaving",
            "format": "date",
            "nullable": true
          },
          "whenEarnedPensionableEarningsCorrection": {
            "type": "number",
            "description": "[readonly] The when earned amount correction to the Gross that is subject to Pension Deductions.",
            "format": "double"
          },
          "whenEarnedPensionablePayCorrection": {
            "type": "number",
            "description": "[readonly] The when earned amount correction to the Gross that pension calculations are based on after taking into account Upper and Lower Limits for the WorkerGroup.",
            "format": "double"
          },
          "whenEarnedEmployeePensionContributionCorrection": {
            "type": "number",
            "description": "[readonly] The when earned amount correction to the Pension Contribution being made by this Employee, excluding any Additional Voluntary Contributions",
            "format": "double"
          },
          "whenEarnedEmployerPensionContributionCorrection": {
            "type": "number",
            "description": "[readonly] The when earned amount correction to the Pension Contribution being made by the Employer for this Employee",
            "format": "double"
          },
          "whenEarnedEmployeePensionContributionAvcCorrection": {
            "type": "number",
            "description": "[readonly] The when earned amount correction to Pension Contribution being made by this Employee as an Additional Voluntary Contribution",
            "format": "double"
          },
          "whenEarnedPensionableEarningsCorrectionBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date when earned amount correction to the Gross that is subject to Pension Deductions.",
            "format": "double"
          },
          "whenEarnedPensionablePayCorrectionBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date when earned amount correction to the Gross that pension calculations are based on after taking into account Upper and Lower Limits for the WorkerGroup.",
            "format": "double"
          },
          "whenEarnedEmployeePensionContributionCorrectionBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date when earned amount correction to the Pension Contribution being made by this Employee, excluding any Additional Voluntary Contributions",
            "format": "double"
          },
          "whenEarnedEmployerPensionContributionCorrectionBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date when earned amount correction to the Pension Contribution being made by the Employer for this Employee",
            "format": "double"
          },
          "whenEarnedEmployeePensionContributionAvcCorrectionBfd": {
            "type": "number",
            "description": "[readonly] The brought forward Year to Date when earned amount correction to Pension Contribution being made by this Employee as an Additional Voluntary Contribution",
            "format": "double"
          },
          "nominalCodeMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PensionSchemeNominalCodeMapping"
            },
            "description": "List of Nominal Code Mappings of the Pension",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "If a PayRunEntry contains pension contributions then it'll also include a PensionSummary model\r\ngiving further information about the Pension Scheme and the contributions made"
      },
      "PensionSummaryCostBreakdown": {
        "type": "object",
        "properties": {
          "pensionRule": {
            "$ref": "#/components/schemas/PensionRule"
          },
          "payCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of pay codes associated with this pension rule.",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "The amount associated with this pension entry.",
            "format": "double"
          },
          "pensionableEarnings": {
            "type": "number",
            "description": "The total pensionable earnings relevant to this pension rule.",
            "format": "double"
          },
          "employeePensionContribution": {
            "type": "number",
            "description": "The contribution amount made by the employee towards the pension.",
            "format": "double"
          },
          "employerPensionContribution": {
            "type": "number",
            "description": "The contribution amount made by the employer towards the pension.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PensionablePayDefinition": {
        "enum": [
          "NotApplicable",
          "QualifyingEarnings",
          "BasicPay",
          "TotalPay",
          "OwnDefinition"
        ],
        "type": "string"
      },
      "PensionerPayroll": {
        "type": "object",
        "properties": {
          "inReceiptOfPension": {
            "type": "boolean",
            "description": "If set to true then the FPS will have the OccPenInd flag set to 'yes'"
          },
          "bereaved": {
            "type": "boolean",
            "description": "Indicator that Occupational Pension is being paid because they are a recently bereaved Spouse/Civil Partner"
          },
          "amount": {
            "type": "number",
            "description": "Annual amount of occupational pension",
            "format": "double"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of occupational Pension",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PercentOfPayBand": {
        "enum": [
          "HundredPercent",
          "BetweenFiftyAndHundredPercent",
          "BelowFiftyPercent"
        ],
        "type": "string"
      },
      "PeriodValue": {
        "type": "object",
        "properties": {
          "effectiveFrom": {
            "type": "string",
            "description": "The date when these period values are effective",
            "format": "date",
            "nullable": true
          },
          "annualValue": {
            "type": "number",
            "description": "The Annual value",
            "format": "double"
          },
          "periodValues": {
            "type": "object",
            "properties": {
              "Custom": {
                "type": "number",
                "format": "double"
              },
              "Quarterly": {
                "type": "number",
                "format": "double"
              },
              "Monthly": {
                "type": "number",
                "format": "double"
              },
              "FourWeekly": {
                "type": "number",
                "format": "double"
              },
              "Fortnightly": {
                "type": "number",
                "format": "double"
              },
              "Weekly": {
                "type": "number",
                "format": "double"
              },
              "Daily": {
                "type": "number",
                "format": "double"
              },
              "Annual": {
                "type": "number",
                "format": "double"
              }
            },
            "additionalProperties": false,
            "description": "Period values for different pay periods",
            "nullable": true
          },
          "midYearChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PeriodValue"
            },
            "description": "Any optional changes to the period values that are effective from a specified date in the middle of a tax year",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PersonalDetails": {
        "required": [
          "dateOfBirth",
          "gender",
          "maritalStatus"
        ],
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "maritalStatus": {
            "$ref": "#/components/schemas/MaritalStatus"
          },
          "title": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "middleName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "alternativeEmail": {
            "maxLength": 100,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "previousSurName": {
            "maxLength": 35,
            "type": "string",
            "nullable": true
          },
          "email": {
            "maxLength": 100,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "emailPayslip": {
            "type": "boolean",
            "description": "If set to true then the employees Payslip will be sent by email when a PayRun is finalised."
          },
          "pdfPassword": {
            "type": "string",
            "description": "Set the password to be used on PDFs. If blank then we'll create a password based on the PdfPasswordType property.",
            "nullable": true
          },
          "pdfPasswordType": {
            "$ref": "#/components/schemas/PdfPasswordType"
          },
          "emailStatement": {
            "type": "boolean",
            "description": "Only applicable to CIS Subcontractors. If set to true then we will automatically email a CIS Statement when a CIS300 is accepted."
          },
          "photoUrl": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "photoSasUrl": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "mobile": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date"
          },
          "statePensionAge": {
            "type": "integer",
            "description": "[readonly] Automatically calculated.",
            "format": "int32"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "niNumber": {
            "maxLength": 15,
            "type": "string",
            "nullable": true
          },
          "passportNumber": {
            "maxLength": 25,
            "type": "string",
            "nullable": true
          },
          "partnerDetails": {
            "$ref": "#/components/schemas/PartnerDetails"
          }
        },
        "additionalProperties": false
      },
      "PricingBand": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "integer",
            "format": "int32"
          },
          "to": {
            "type": "integer",
            "format": "int32"
          },
          "price": {
            "type": "number",
            "format": "double"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PricingTable": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "minimumCharge": {
            "type": "number",
            "format": "double"
          },
          "bands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PricingBand"
            },
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "netSuiteItemCode": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "netSuiteDescription": {
            "maxLength": 40,
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ProRataRule": {
        "enum": [
          "WorkingDaysInPeriod",
          "CalendarDaysInPeriod",
          "TwoSixtyRule",
          "ThreeSixFiveRule"
        ],
        "type": "string"
      },
      "ProcessingNote": {
        "required": [
          "note"
        ],
        "type": "object",
        "properties": {
          "payRunEntryId": {
            "type": "string",
            "description": "The Id of the payrunEntry this ProcessingNote relates to, if any",
            "format": "uuid",
            "nullable": true
          },
          "note": {
            "minLength": 1,
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/Item"
          },
          "payRun": {
            "$ref": "#/components/schemas/Item"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "documentCount": {
            "type": "integer",
            "description": "[readonly] The number of attachments associated with this model",
            "format": "int32"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] The attachments associated with this model",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/ProcessingNoteStatus"
          },
          "updatedByName": {
            "type": "string",
            "description": "Name of the user who was last to update the record",
            "nullable": true
          },
          "completedDate": {
            "type": "string",
            "description": "UpdatedDate is assigned to this to get around the base implementation of UpdatedDate having [JsonIgnore] tag",
            "format": "date",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ProcessingNoteStatus": {
        "enum": [
          "New",
          "Complete"
        ],
        "type": "string"
      },
      "RecoverableAmounts": {
        "type": "object",
        "properties": {
          "taxMonth": {
            "type": "integer",
            "format": "int32"
          },
          "smpRecovered": {
            "type": "number",
            "description": "Value of Statutory Maternity Pay recovered year to date",
            "format": "double"
          },
          "sppRecovered": {
            "type": "number",
            "description": "Value of Statutory Paternity Pay recovered year to date",
            "format": "double"
          },
          "sapRecovered": {
            "type": "number",
            "description": "Value of Statutory Adoption Pay recovered year to date",
            "format": "double"
          },
          "shPPRecovered": {
            "type": "number",
            "description": "Value of Shared Parental Pay recovered year to date",
            "format": "double"
          },
          "spbpRecovered": {
            "type": "number",
            "description": "Value of Statutory Parental Bereavement Pay recovered year to date",
            "format": "double"
          },
          "spbpNorthernIrelandRecovered": {
            "type": "number",
            "description": "Value of Statutory Parental Bereavement Pay Northern Ireland recovered year to date",
            "format": "double"
          },
          "sncpRecovered": {
            "type": "number",
            "description": "Value of Statutory Neonatal Care Pay recovered year to date",
            "format": "double"
          },
          "nicCompensationOnSMP": {
            "type": "number",
            "description": "Value of NIC compensation on SMP year to date",
            "format": "double"
          },
          "nicCompensationOnSPP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Paternity Pay year to date",
            "format": "double"
          },
          "nicCompensationOnSAP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Adoption Pay year to date",
            "format": "double"
          },
          "nicCompensationOnShPP": {
            "type": "number",
            "description": "Value of NIC compensation on Shared Parental Pay year to date",
            "format": "double"
          },
          "nicCompensationOnSPBP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Parental Bereavement Pay year to date",
            "format": "double"
          },
          "nicCompensationOnSPBPNorthernIreland": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Parental Bereavement Pay Northern Ireland year to date",
            "format": "double"
          },
          "nicCompensationOnSNCP": {
            "type": "number",
            "description": "Value of NIC compensation on Statutory Neonatal Care Pay year to date",
            "format": "double"
          },
          "cisDeductionsSuffered": {
            "type": "number",
            "description": "Value of CIS deductions suffered year to date",
            "format": "double"
          },
          "total": {
            "type": "number",
            "description": "The total value of the reclaimed amounts",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ReenrolmentStatus": {
        "enum": [
          "NotStarted",
          "InProgress",
          "Completed"
        ],
        "type": "string"
      },
      "Report": {
        "enum": [
          "GrossToNet",
          "GrossToNetCis",
          "PayrunPayments",
          "Furlough",
          "PensionContribs",
          "Journal",
          "HourlyPay",
          "UmbrellaReconciliation",
          "UmbrellaStatement",
          "StatutoryPay",
          "CostAnalysis",
          "CostOfEmployment",
          "FullSummaryOfPay",
          "P11",
          "P11d",
          "P30",
          "P32",
          "P45",
          "P60",
          "EmployeeExport",
          "RightToWork",
          "AeoStatement",
          "HolidayAllowances",
          "HolidayPayAccruals",
          "AeAssessments",
          "CisStatement",
          "SubcontractorSummary",
          "PayrollAnalysis",
          "VarianceReport",
          "P11Detailed",
          "NiLetterValidation",
          "Ytd",
          "TaxCodeChanges",
          "EmployeeBenefits",
          "MemberEnrolment",
          "AttachmentOrders",
          "NiYtd",
          "ApprenticeshipLevy",
          "TeachersPensionEoy",
          "MaternitySchedule",
          "PaySpine",
          "SpinePoint",
          "PayGrades",
          "PaySpineAllowances",
          "AverageHolidayPayRate",
          "EmployeeRoleExport",
          "HolidayPayAccrualsHours",
          "GenderPayGap",
          "PensionMemberships",
          "PayElement",
          "LoanBalances",
          "EmployeeLeave",
          "AdvancedVarianceReport",
          "EmployeePayments",
          "EmployeeLoanExport",
          "CombinedPensionContributions",
          "CyclicReenrolment"
        ],
        "type": "string"
      },
      "ReportCustomCssOption": {
        "enum": [
          "UseDefault",
          "AppendToDefault",
          "ReplaceDefault"
        ],
        "type": "string"
      },
      "ReportFormat": {
        "enum": [
          "Json",
          "Csv",
          "Pdf"
        ],
        "type": "string"
      },
      "ReportPack": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The name of this ReportPack"
          },
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Report"
            },
            "description": "The Reports included in this ReportPack",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "A ReportPack is used to group together a number of reports"
      },
      "ReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "description": "[readonly] If the type is application.json then this will contain a JSON representation of the relevant model",
            "nullable": true
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "ReportSortBy": {
        "enum": [
          "PayrollCode",
          "LastName",
          "Department"
        ],
        "type": "string"
      },
      "ReportTemplateColumnType": {
        "enum": [
          "CustomFixedData",
          "EmployeeField",
          "EmployerField",
          "PayRunField",
          "RoleField",
          "PayDataField"
        ],
        "type": "string"
      },
      "RightToWork": {
        "type": "object",
        "properties": {
          "checked": {
            "type": "boolean"
          },
          "documentType": {
            "$ref": "#/components/schemas/RightToWorkDocumentType"
          },
          "documentRef": {
            "maxLength": 80,
            "type": "string",
            "nullable": true
          },
          "documentExpiry": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "note": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RightToWorkDocumentType": {
        "enum": [
          "Other",
          "Visa",
          "Passport",
          "BirthCertificate",
          "IdentityCard",
          "ShareCode"
        ],
        "type": "string"
      },
      "RightToWorkReport": {
        "type": "object",
        "properties": {
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RightToWorkReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "RightToWorkReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "rightToWork": {
            "$ref": "#/components/schemas/RightToWork"
          }
        },
        "additionalProperties": false
      },
      "RightToWorkReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/RightToWorkReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "RoleBasis": {
        "enum": [
          "NotApplicable",
          "Permanent",
          "Temporary",
          "FixedTerm",
          "ZeroHours",
          "Casual",
          "Supply"
        ],
        "type": "string"
      },
      "RoleType": {
        "enum": [
          "NotApplicable",
          "Teacher",
          "Support",
          "Other"
        ],
        "type": "string"
      },
      "RtiAgent": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "nullable": true
          },
          "company": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "contact": {
            "$ref": "#/components/schemas/RtiContact"
          }
        },
        "additionalProperties": false
      },
      "RtiContact": {
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "email": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RtiEmployeeAddress": {
        "type": "object",
        "properties": {
          "line": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "nullable": true
          },
          "ukPostcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "foreignCountry": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RtiEmployeeName": {
        "type": "object",
        "properties": {
          "ttl": {
            "type": "string",
            "nullable": true
          },
          "fore": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "initials": {
            "type": "string",
            "nullable": true
          },
          "sur": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RtiSenderType": {
        "enum": [
          "ActingInCapacity",
          "Agent",
          "Bureau",
          "Company",
          "Employer",
          "Government",
          "Individual",
          "Other",
          "Partnership",
          "Trust"
        ],
        "type": "string"
      },
      "RtiSubmissionSettings": {
        "type": "object",
        "properties": {
          "senderType": {
            "$ref": "#/components/schemas/RtiSenderType"
          },
          "senderId": {
            "maxLength": 30,
            "type": "string",
            "description": "The SenderId used to submit RTI documents to HMRC",
            "nullable": true
          },
          "password": {
            "maxLength": 200,
            "type": "string",
            "description": "The Password used to submit RTI documents to HMRC",
            "nullable": true
          },
          "excludeNilPaid": {
            "type": "boolean",
            "description": "Whether or not to include Employees paid a zero amount on your FPS"
          },
          "includeHashCrossRef": {
            "type": "boolean",
            "description": "[readonly] Whether or not the Bacs Cross Ref field is included on your FPS submissions\r\nThis is automatically set to true if you use a bank payments CSV format that supports it\r\nor set to false if not"
          },
          "autoSubmitFps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your FPS to HMRC whenever you finalise a PayRun"
          },
          "testInLive": {
            "type": "boolean",
            "description": "Used for testing the RTI gateway. If set to true then the Document Type name will have \"-TIL\" appended to it"
          },
          "useTestGateway": {
            "type": "boolean",
            "description": "If set to true then your RTI documents will be sent to HMRCs test services instead of the live service"
          },
          "overrideTimestampValue": {
            "maxLength": 25,
            "type": "string",
            "description": "If a value is provided then it will be used as the timestamp on the RTI submission. This would normally only be used for testing purposes.",
            "nullable": true
          },
          "contact": {
            "$ref": "#/components/schemas/RtiContact"
          },
          "agent": {
            "$ref": "#/components/schemas/RtiAgent"
          },
          "allowLinkedEps": {
            "type": "boolean",
            "description": "If set to true this will allow you to submit a combined Employer Payment Summary"
          },
          "shouldCompressFps": {
            "type": "boolean",
            "description": "If set to true this will compress the FPS before submitting to HMRC"
          },
          "autoSubmitEps": {
            "type": "boolean",
            "description": "If set to true, we'll automatically send your EPS to HMRC whenever you finalise a PayRun."
          }
        },
        "additionalProperties": false
      },
      "RtiValidationWarning": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/RtiValidationWarningType"
          },
          "employeeId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RtiValidationWarningType": {
        "enum": [
          "MissingAddress",
          "MissingNiNo"
        ],
        "type": "string"
      },
      "ServiceBand": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "integer",
            "format": "int32"
          },
          "to": {
            "type": "integer",
            "format": "int32"
          },
          "entitlementBands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntitlementBand"
            },
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ShiftWorkingPatternDay": {
        "type": "object",
        "properties": {
          "day": {
            "type": "integer",
            "format": "int32"
          },
          "isWorkingDay": {
            "type": "boolean"
          },
          "hours": {
            "type": "number",
            "format": "double"
          },
          "workingPatternHoursType": {
            "$ref": "#/components/schemas/WorkingPatternHoursType"
          }
        },
        "additionalProperties": false
      },
      "SmtpEncryption": {
        "enum": [
          "Auto",
          "Ssl",
          "Tls"
        ],
        "type": "string"
      },
      "SmtpSettings": {
        "type": "object",
        "properties": {
          "smtpServer": {
            "type": "string",
            "nullable": true
          },
          "smtpPort": {
            "type": "integer",
            "format": "int32"
          },
          "encryption": {
            "$ref": "#/components/schemas/SmtpEncryption"
          },
          "smtpUsername": {
            "type": "string",
            "nullable": true
          },
          "smtpPassword": {
            "type": "string",
            "nullable": true
          },
          "accessToken": {
            "type": "string",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "format": "date"
          },
          "refreshToken": {
            "type": "string",
            "nullable": true
          },
          "expiresIn": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SpinePointReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpinePointReportLine"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SpinePointReportLine": {
        "type": "object",
        "properties": {
          "spineName": {
            "type": "string",
            "description": "Spine Name",
            "nullable": true
          },
          "spinePointName": {
            "type": "string",
            "description": "Spine Point Name",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Spine Point Number",
            "format": "int32"
          },
          "effectiveDate": {
            "type": "string",
            "description": "Effective Date of spine point",
            "format": "date"
          },
          "annualValue": {
            "type": "number",
            "description": "Annual Value of spine point",
            "format": "double"
          },
          "annualValueAltMax": {
            "type": "number",
            "description": "Alt Max Annual Value of spine point",
            "format": "double",
            "nullable": true
          },
          "annualValueLAInner": {
            "type": "number",
            "description": "Annual Value LA Inner of spine point",
            "format": "double",
            "nullable": true
          },
          "annualValueLAInnerAltMax": {
            "type": "number",
            "description": "Annual Value LA Inner Alt Max of spine point",
            "format": "double",
            "nullable": true
          },
          "annualValueLAOuter": {
            "type": "number",
            "description": "Annual Value LA Outer of spine point",
            "format": "double",
            "nullable": true
          },
          "annualValueLAOuterAltMax": {
            "type": "number",
            "description": "Annual Value LA Outer Alt Max of spine point",
            "format": "double",
            "nullable": true
          },
          "annualValueLAFringe": {
            "type": "number",
            "description": "Annual Value LA Fringe of spine point",
            "format": "double",
            "nullable": true
          },
          "annualValueLAFringeAltMax": {
            "type": "number",
            "description": "Annual Value LA Fringe Alt Max of spine point",
            "format": "double",
            "nullable": true
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SpinePointReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/SpinePointReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "StarterDeclaration": {
        "enum": [
          "A",
          "B",
          "C",
          "Unknown"
        ],
        "type": "string"
      },
      "StarterDetails": {
        "required": [
          "startDate",
          "starterDeclaration"
        ],
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "starterDeclaration": {
            "$ref": "#/components/schemas/StarterDeclaration"
          },
          "overseasEmployerDetails": {
            "$ref": "#/components/schemas/OverseasEmployerDetails"
          },
          "pensionerPayroll": {
            "$ref": "#/components/schemas/PensionerPayroll"
          }
        },
        "additionalProperties": false
      },
      "StartersLeaversFilter": {
        "enum": [
          "Starters",
          "Leavers"
        ],
        "type": "string"
      },
      "StatPayFrequency": {
        "enum": [
          "DaysInPeriod",
          "WeeksInPeriod"
        ],
        "type": "string"
      },
      "StatutoryPay": {
        "type": "object",
        "properties": {
          "weeklyParentalLeaveAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "weeklySickPayAmount": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "aweEligibilityThreshold": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "aweSickPayEligibilityThreshold": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate Statutory Pay.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "StatutoryPayReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatutoryPayReportLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "StatutoryPayReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "ssp": {
            "type": "number",
            "format": "double"
          },
          "smp": {
            "type": "number",
            "format": "double"
          },
          "spp": {
            "type": "number",
            "format": "double"
          },
          "sap": {
            "type": "number",
            "format": "double"
          },
          "shpp": {
            "type": "number",
            "format": "double"
          },
          "spbp": {
            "type": "number",
            "format": "double"
          },
          "hasStatPay": {
            "type": "boolean",
            "readOnly": true
          },
          "totalStatPay": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "StatutoryPayReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/StatutoryPayReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "StringDecimalKeyValuePair": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "StringStringDecimalValueTuple": {
        "type": "object",
        "properties": {
          "item1": {
            "type": "string",
            "nullable": true
          },
          "item2": {
            "type": "string",
            "nullable": true
          },
          "item3": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "StringStringKeyValuePair": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StudentLoan": {
        "enum": [
          "None",
          "PlanOne",
          "PlanTwo",
          "PlanFour",
          "PlanFive"
        ],
        "type": "string"
      },
      "StudentLoanRecovered": {
        "type": "object",
        "properties": {
          "planType": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SubmissionStatus": {
        "enum": [
          "NotSubmitted",
          "Submitted",
          "ErrorResponse",
          "Accepted"
        ],
        "type": "string"
      },
      "SupplementaryPayRunDetails": {
        "required": [
          "description",
          "employeeUniqueIds",
          "paymentDate"
        ],
        "type": "object",
        "properties": {
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Description of the Supplementary Pay Run\r\nThis will be set to a default value if not set by the user"
          },
          "paymentDate": {
            "type": "string",
            "description": "The intended date that the Employees included in the supplementary PayRun will be paid, although this can be changed on a per PayRunEntry basis\r\nThis date must be on or after the PaymentDate of the main PayRun",
            "format": "date"
          },
          "employeeUniqueIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "List of employee unique ids to be included in a supplementary Payrun"
          }
        },
        "additionalProperties": false
      },
      "Tag": {
        "required": [
          "code",
          "title"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The unique code for this Tag"
          },
          "title": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The title for this Tag"
          },
          "color": {
            "maxLength": 6,
            "type": "string",
            "description": "A color to used to represent this Tag, in hex format. ie 'ff0000'",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TaxAndNi": {
        "required": [
          "niTable"
        ],
        "type": "object",
        "properties": {
          "niTable": {
            "type": "string",
            "description": "The appropriate NI letter for this Employee"
          },
          "secondaryClass1NotPayable": {
            "type": "boolean",
            "description": "If set to true then no Employer NI will be paid for this Employee"
          },
          "postgradLoan": {
            "type": "boolean",
            "description": "Set to true if the Employee needs to make Post Graduate Loan repayments"
          },
          "postgraduateLoanStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "postgraduateLoanEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "studentLoan": {
            "$ref": "#/components/schemas/StudentLoan"
          },
          "studentLoanStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "studentLoanEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "taxCode": {
            "maxLength": 12,
            "type": "string",
            "description": "The Tax Code for this Employee",
            "nullable": true
          },
          "week1Month1": {
            "type": "boolean",
            "description": "Determines whether PAYE should be calculated on a Week1/Month1 basis instead of on a cumulative basis.\r\nThis is automatically set to false for any existing Employees when you start a new Tax Year."
          },
          "foreignTaxCredit": {
            "type": "boolean",
            "description": "If set to True you are enabling the possibility to enter an amount on payslip so you can reduce UK Tax liabilities."
          }
        },
        "additionalProperties": false
      },
      "TaxBracket": {
        "type": "object",
        "properties": {
          "from": {
            "type": "number",
            "description": "[readonly] The starting point for applying this tax rate",
            "format": "double"
          },
          "to": {
            "type": "number",
            "description": "[readonly] The end point for applying this tax rate",
            "format": "double"
          },
          "multiplier": {
            "type": "number",
            "description": "[readonly] The tax rate to apply",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TaxCodeChange": {
        "type": "object",
        "properties": {
          "suffix": {
            "type": "string",
            "description": "[readonly] The suffix of the Tax Code that needs to be incremented for this Tax Year",
            "nullable": true
          },
          "increment": {
            "type": "integer",
            "description": "[readonly] The amount by which to increment Tax Codes with the given suffix",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to perform the Year End routine.\r\nIt is used internally when our engine performs the Year End routine.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "TaxCodeChangeReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxCodeChangeValues"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "TaxCodeChangeReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/TaxCodeChangeReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "TaxCodeChangeValues": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "integer",
            "format": "int32"
          },
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "niNumber": {
            "type": "string",
            "nullable": true
          },
          "periodChange": {
            "type": "integer",
            "format": "int32"
          },
          "previousTaxCode": {
            "type": "string",
            "nullable": true
          },
          "currentTaxCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TaxYear": {
        "enum": [
          "Year2017",
          "Year2018",
          "Year2019",
          "Year2020",
          "Year2021",
          "Year2022",
          "Year2023",
          "Year2024",
          "Year2025",
          "Year2026"
        ],
        "type": "string"
      },
      "TaxYearConfig": {
        "type": "object",
        "properties": {
          "taxYear": {
            "type": "integer",
            "description": "[readonly] The TaxYear for which this configuration applies",
            "format": "int32"
          },
          "isPreview": {
            "type": "boolean",
            "description": "[readonly] Indicates that this is a preview of the given years configuration and it shouldn't yet be used for live processing of payroll data."
          },
          "defaultTaxCode": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "class1ANicsRate": {
            "$ref": "#/components/schemas/DecimalTaxYearConfigPrimitiveValue"
          },
          "lowerEarningsLimit": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "upperEarningsLimit": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "primaryThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "secondaryThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "upperAccrualPoint": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "upperSecondaryThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "apprenticeUpperSecondaryThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "freeportsUpperSecondaryThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "veteransUpperSecondaryThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "directorsProratePrimaryThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "plan1StudentLoanThreshold": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "plan1StudentLoanRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "plan2StudentLoanThreshold": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "plan2StudentLoanRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "plan4StudentLoanThreshold": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "plan4StudentLoanRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "plan5StudentLoanThreshold": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "plan5StudentLoanRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "postGradLoanThreshold": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "postGradLoanRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "deaProtectedEarnings": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "pensionLowerThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "pensionAutomaticEnrolment": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "pensionUpperThreshold": {
            "$ref": "#/components/schemas/PeriodValue"
          },
          "pensionAeEmployerContribution": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "pensionAeEmployeeContribution": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "minimumAeAge": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "maximumAeAge": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "eligibleAeAge": {
            "type": "integer",
            "description": "[readonly]",
            "format": "int32"
          },
          "employmentAllowancePreviousYear": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "employmentAllowance": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "fixedCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FixedCode"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "scottishFixedCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FixedCode"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "welshFixedCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FixedCode"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "niRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NationalInsuranceCode"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "directorsNiRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NationalInsuranceCode"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "brackets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxBracket"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "scottishBrackets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxBracket"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "welshBrackets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxBracket"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "taxCodeChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxCodeChange"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "minimumWage": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NationalMinimumWage"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "statutoryPay": {
            "$ref": "#/components/schemas/StatutoryPay"
          },
          "loanCharge": {
            "$ref": "#/components/schemas/LoanCharge"
          },
          "carCharge": {
            "$ref": "#/components/schemas/CarCharge"
          },
          "govTalk": {
            "$ref": "#/components/schemas/GovTalk"
          },
          "mileageAllowancePaymentsRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MileageAllowancePaymentsRate"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "tieredPensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TieredPension"
            },
            "description": "[readonly]",
            "nullable": true
          },
          "nicRecoverableNormalEmployerRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "nicRecoverableSmallEmployerRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "nicCompensationNormalEmployerRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          },
          "nicCompensationSmallEmployerRate": {
            "type": "number",
            "description": "[readonly]",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "The configuation that our engine uses to perform calculations for the related TaxYear.\r\nIt is used internally when our engine performs any calculations or the Year End routine.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "TaxYearTypes": {
        "enum": [
          "Year2017",
          "Year2018",
          "Year2019",
          "Year2020",
          "Year2021",
          "Year2022",
          "Year2023",
          "Year2024",
          "Year2025",
          "Year2026"
        ],
        "type": "string"
      },
      "TeachersPensionAgeWarning": {
        "enum": [
          "EmployeeUnder16",
          "EmployeeTurns16",
          "EmployeeOver75",
          "EmployeeTurns75"
        ],
        "type": "string"
      },
      "TeachersPensionDetails": {
        "type": "object",
        "properties": {
          "employmentType": {
            "$ref": "#/components/schemas/TeachersPensionEmploymentType"
          },
          "fullTimeSalary": {
            "type": "integer",
            "description": "Up to 7 digits, in pounds. eg 24000",
            "format": "int32",
            "nullable": true
          },
          "partTimeSalaryPaid": {
            "type": "integer",
            "description": "Up to 7 digits, in pounds. eg 24000",
            "format": "int32",
            "nullable": true
          },
          "mcrRoleId1": {
            "maxLength": 15,
            "type": "string",
            "description": "Data field for the Contract used for Teachers pension administration",
            "nullable": true
          },
          "mcrRoleId2": {
            "maxLength": 20,
            "type": "string",
            "description": "The Job role within the contract used for Teachers pension administration",
            "nullable": true
          },
          "teachersPensionAdminNiNumber": {
            "maxLength": 9,
            "type": "string",
            "description": "Where an employee does not have an NI number yet (or doesn't know their NI number) Teachers Pensions will issue an administrative NI number",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to represent additional information needed for \r\nTeachers' Pensions"
      },
      "TeachersPensionEmploymentType": {
        "enum": [
          "FullTime",
          "PartTimeRegular",
          "IrregularPartTime",
          "IrregularPartTime_In"
        ],
        "type": "string"
      },
      "TeachersPensionEoyLineItem": {
        "type": "object",
        "properties": {
          "tier": {
            "type": "number",
            "format": "double"
          },
          "percentageRate": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "contributorySalary": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "teachersContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "employersContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "TeachersPensionEoyReport": {
        "type": "object",
        "properties": {
          "pdfFileName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "establishment": {
            "$ref": "#/components/schemas/Establishment"
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeachersPensionEoyLineItem"
            },
            "nullable": true,
            "readOnly": true
          },
          "careerAverageFlexibilities": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "additionalPensionPayments": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "additionalContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "teachersContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "employersContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "totalContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "efeArrears": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "prestonContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "tr22ElectionAmounts": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "totalExtraContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "overallBalance": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "employersContributionPercentage": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "totalContributorySalary": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "totalTeachersContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "totalEmployersContributions": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "TeachersPensionEoyReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/TeachersPensionEoyReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "Tenant": {
        "type": "object",
        "properties": {
          "brandCode": {
            "maxLength": 100,
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "appName": {
            "type": "string",
            "nullable": true
          },
          "homeUrl": {
            "type": "string",
            "nullable": true
          },
          "headContent": {
            "type": "string",
            "nullable": true
          },
          "logOutUrl": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "loginImgUrl": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "homeImgUrl": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "favIcon": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "cssColorsFile": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "cssFile": {
            "type": "string",
            "description": "[readonly]",
            "nullable": true
          },
          "mailingList": {
            "type": "boolean"
          },
          "htmlInsertions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenantHtmlInsertion"
            },
            "nullable": true
          },
          "mailSettings": {
            "$ref": "#/components/schemas/MailSettings"
          },
          "signupUrl": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "termsUrl": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "helpUrl": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "supportEmail": {
            "maxLength": 150,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "newUserSignupEmail": {
            "maxLength": 150,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "approveNewUsers": {
            "type": "boolean"
          },
          "enableBureauFeatures": {
            "type": "boolean"
          },
          "requireDdMandateBeforeAllowingBillableActivity": {
            "type": "boolean"
          },
          "whiteLabelMode": {
            "type": "boolean"
          },
          "enableReportWriterFeature": {
            "type": "boolean",
            "description": "Indicates if the Report Writer feature is enabled for the tenant."
          },
          "disableEvc": {
            "type": "boolean",
            "description": "Indicates whether FPS should be submitted to EVC for employees/employers under this tenant."
          },
          "tenantOwnsBilling": {
            "type": "boolean",
            "description": "[readonly]"
          },
          "billingSettings": {
            "$ref": "#/components/schemas/TenantBillingSettings"
          },
          "usersCanManageAccountSecuritySettings": {
            "type": "boolean",
            "description": "If the users are allowed manage their own account security settings through a page or portal defined by their current authentication provider"
          },
          "enableAdminsToManageReportWriter": {
            "type": "boolean",
            "description": "Indicates whether all Admin users of a tenant can manage report templates."
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The Tenant model represents the brand that provides the account.\r\nThis is used by our White Label partners to manage and brand their user accounts.\r\nUnless you are an admin for a White Label account you'll have no interest in this model."
      },
      "TenantBillingSettings": {
        "type": "object",
        "properties": {
          "discount": {
            "type": "number",
            "format": "double"
          },
          "monthlyMinimum": {
            "type": "number",
            "format": "double"
          },
          "aggregatedPricing": {
            "type": "boolean"
          },
          "billTo": {
            "type": "string",
            "description": "If all activity for a Tenant is being biulled to a specifc user, set the email address here",
            "nullable": true
          },
          "pricingTable": {
            "type": "string",
            "description": "If BillTo is set, then specify a Pricing Table to use from the Staffology tenant, otherwise the default Staffology Pricing Table will be used",
            "format": "uuid",
            "nullable": true
          },
          "netSuiteDefaultItemCode": {
            "type": "string",
            "description": "[readonly] The item code used in the NetSuite billing if not specified in the pricing table",
            "nullable": true
          },
          "netSuiteDefaultDescription": {
            "type": "string",
            "description": "[readonly] The product description used in the NetSuite billing if not specified in the pricing table",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TenantEmail": {
        "required": [
          "subject",
          "toEmail",
          "toName"
        ],
        "type": "object",
        "properties": {
          "toName": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "toEmail": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "subject": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "buttonText": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "buttonLink": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "bodyPreview": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "afterBtnBody": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "statusDate": {
            "type": "string",
            "format": "date-time"
          },
          "statusMessage": {
            "type": "string",
            "nullable": true
          },
          "sendAttempts": {
            "type": "integer",
            "format": "int32"
          },
          "webAppBaseUrl": {
            "type": "string",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailAttachment"
            },
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "TenantHtmlInsertion": {
        "type": "object",
        "properties": {
          "insertionPoint": {
            "$ref": "#/components/schemas/HtmlInsertionPoint"
          },
          "content": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TenantItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Tenant that the user account can administrate.\r\nUnless you are an admin for a White Label account you'll have no interest in this model."
      },
      "TieredPension": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PensionContributionLevelType"
          },
          "rates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TieredPensionRate"
            },
            "nullable": true
          },
          "employerContribRate": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate tiered pension contributions.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "TieredPensionRate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "rangeStart": {
            "type": "number",
            "format": "double"
          },
          "rate": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Part of the TaxYearConfig that our engine uses to calculate tiered pension contributions.\r\nIt is used internally when our engine performs calculations.\r\nYou do not need to do anything with this model, it's provided purely for informational purposes."
      },
      "UmbrellaPayment": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "description": "When importing multiple UmbrellaPayments this field is used to identify the employee",
            "nullable": true
          },
          "chargePerTimesheet": {
            "type": "number",
            "description": "Override the settings for this employer by specifying a ChargePerTimeSheet.\r\nOr leave it as null to use the settings from the Employer",
            "format": "double",
            "nullable": true
          },
          "invoiceValue": {
            "type": "number",
            "format": "double"
          },
          "mapsMiles": {
            "type": "integer",
            "format": "int32"
          },
          "otherExpenses": {
            "type": "number",
            "format": "double"
          },
          "numberOfTimesheets": {
            "type": "integer",
            "format": "int32"
          },
          "hoursWorked": {
            "type": "number",
            "format": "double"
          },
          "grossDeduction": {
            "type": "number",
            "format": "double"
          },
          "grossAddition": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "UmbrellaReconciliationReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UmbrellaReconciliationReportLine"
            },
            "nullable": true
          },
          "employer": {
            "$ref": "#/components/schemas/Item"
          },
          "payPeriod": {
            "$ref": "#/components/schemas/PayPeriods"
          },
          "ordinal": {
            "type": "integer",
            "format": "int32"
          },
          "period": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTo": {
            "type": "integer",
            "format": "int32"
          },
          "startPeriodName": {
            "type": "string",
            "nullable": true
          },
          "endPeriodName": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "UmbrellaReconciliationReportLine": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "period": {
            "type": "string",
            "nullable": true
          },
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "totalGross": {
            "type": "number",
            "format": "double"
          },
          "netPay": {
            "type": "number",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "format": "double"
          },
          "employeeNi": {
            "type": "number",
            "format": "double"
          },
          "employerNi": {
            "type": "number",
            "format": "double"
          },
          "employeePension": {
            "type": "number",
            "format": "double"
          },
          "employerPension": {
            "type": "number",
            "format": "double"
          },
          "expenses": {
            "type": "number",
            "format": "double"
          },
          "fee": {
            "type": "number",
            "format": "double"
          },
          "appLevy": {
            "type": "number",
            "format": "double"
          },
          "invoiceValue": {
            "type": "number",
            "format": "double"
          },
          "employeeCosts": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "employerCosts": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "total": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "UmbrellaReconciliationReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/UmbrellaReconciliationReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "UsageBill": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          },
          "payslipCount": {
            "type": "integer",
            "format": "int32"
          },
          "previouslyBilledPayslipCount": {
            "type": "integer",
            "description": "The number of payslips that appear in the usage, but were billed in a previous period",
            "format": "int32"
          },
          "netCost": {
            "type": "number",
            "description": "Net cost of any payslips, or the Pricing Table minimum, whichever is greater.",
            "format": "double"
          },
          "discount": {
            "type": "number",
            "format": "double"
          },
          "partnerDiscountAmount": {
            "type": "number",
            "format": "double"
          },
          "monthlyMinimum": {
            "type": "number",
            "description": "This is actually an offset against the NetCost and doesn't contain the full MonthlyMinimum.",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "paid": {
            "type": "boolean"
          },
          "usage": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "nullable": true
          },
          "accountingCustomerId": {
            "type": "string",
            "nullable": true
          },
          "accountingInvoiceId": {
            "type": "string",
            "nullable": true
          },
          "accountingInvoiceLink": {
            "type": "string",
            "nullable": true
          },
          "useNetSuite": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "User": {
        "type": "object",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/UserCategory"
          },
          "emailAddress": {
            "maxLength": 150,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "pendingEmailAddress": {
            "maxLength": 150,
            "type": "string",
            "description": "If the user has requested to change their email address then the \r\naddress it'll be changed to after verification will be shown here.",
            "format": "email",
            "nullable": true
          },
          "firstName": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "salutation": {
            "maxLength": 35,
            "pattern": "^[A-Za-z '\\-]{1,35}$",
            "type": "string",
            "nullable": true
          },
          "userIdentifier": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "photo": {
            "maxLength": 1000,
            "type": "string",
            "nullable": true
          },
          "photoSasUrl": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "$ref": "#/components/schemas/UserRole"
          },
          "jobType": {
            "$ref": "#/components/schemas/UserJobType"
          },
          "jobTitle": {
            "maxLength": 150,
            "type": "string",
            "nullable": true
          },
          "telephoneNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "businessName": {
            "maxLength": 160,
            "pattern": "^[A-Za-z0-9 ,;:'£()\\-\\.\\@\\$\\&]{1,160}$",
            "type": "string",
            "nullable": true
          },
          "industry": {
            "$ref": "#/components/schemas/UserIndustry"
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "statedEmployeeCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "emailVerified": {
            "type": "boolean"
          },
          "emailVerificationKey": {
            "type": "string",
            "format": "uuid"
          },
          "gdprOptin": {
            "type": "boolean"
          },
          "inviteCode": {
            "type": "string",
            "nullable": true
          },
          "registrationIp": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "registrationDate": {
            "type": "string",
            "format": "date"
          },
          "lastLogin": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "isActivated": {
            "type": "boolean"
          },
          "authorization": {
            "$ref": "#/components/schemas/UserAuthorization"
          },
          "isSuperAdmin": {
            "type": "boolean"
          },
          "canUseBureauFeatures": {
            "type": "boolean"
          },
          "canUseBetaFeatures": {
            "type": "boolean"
          },
          "canUseReportWriter": {
            "type": "boolean",
            "description": "Indicates whether the user has permission to use the report writer feature."
          },
          "isBilledInNetSuite": {
            "type": "boolean"
          },
          "tenant": {
            "$ref": "#/components/schemas/Tenant"
          },
          "requestDdSetup": {
            "type": "boolean",
            "description": "[readonly] If true then the user is required to set up a direct debit mandate"
          },
          "disabled": {
            "type": "boolean",
            "description": "[readonly] If true then any employers the owner managed will not be able to run new payruns.\r\nDisabledReason will give a reason why the account is disabled"
          },
          "canCreateEmployers": {
            "type": "boolean",
            "description": "[readonly] If false then the user cannot create new employers.\r\nThis can be turned on or off by the tenant admin."
          },
          "disabledReason": {
            "type": "string",
            "nullable": true
          },
          "directDebitMandate": {
            "$ref": "#/components/schemas/DirectDebitMandate"
          },
          "displayPrefs": {
            "$ref": "#/components/schemas/UserDisplayPreferences"
          },
          "showBills": {
            "type": "boolean",
            "description": "[readonly] Whether or not the user can see bills. This will be false if the Tenant manages billing and the user is not an admin for the Tenant",
            "nullable": true
          },
          "accountingCustomerId": {
            "type": "string",
            "description": "[readonly] Used internally to manage billing",
            "nullable": true
          },
          "pricingTableId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "utmInfo": {
            "$ref": "#/components/schemas/UtmInfo"
          },
          "firstBillableActivityDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "migratedFrom": {
            "maxLength": 150,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "bureauNotificationEmailAddress": {
            "maxLength": 150,
            "type": "string",
            "description": "If an email address is provided here then Bureau-related notifications will go to this address instead of the EmailAddress",
            "format": "email",
            "nullable": true
          },
          "monthlyMinimum": {
            "$ref": "#/components/schemas/MonthlyMinimum"
          },
          "apiMailingEnabled": {
            "type": "boolean",
            "description": "Flag to keep the user up-to-date with any API changes and inform about upcoming breaking changes."
          },
          "loginDisabled": {
            "type": "boolean",
            "description": "[readonly] If true then the user will not have login permissions"
          },
          "isBureauMember": {
            "type": "boolean",
            "description": "Indicates whether the user is a bureau member."
          },
          "canEnablePremiumConnectors": {
            "type": "boolean",
            "description": "Indicates whether the user has permission to enable the premium connectors feature."
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a User Account.\r\nAs well as basic details about the user it also includes details of Employers that the user account can access."
      },
      "UserAuthorization": {
        "type": "object",
        "properties": {
          "employers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployerItem"
            },
            "description": "[readonly] A list of any Employers that the user can access",
            "nullable": true
          },
          "tenants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenantItem"
            },
            "description": "[readonly] A list of any Tenants that the user can administrate",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This model provides information about what the User is able to access.\r\nThis would usually just be a list of Employers. But if the user is an administrator for a White Label instance then this will be shown in the list of Tenants."
      },
      "UserCategory": {
        "enum": [
          "ActiveTrialist",
          "AgedActiveTrialist",
          "LapsedTrialist",
          "ActiveCustomer",
          "LapsedCustomer",
          "SubUser",
          "AgedActiveTrialistAndSubUser",
          "InternalUser"
        ],
        "type": "string"
      },
      "UserDisplayPreferences": {
        "type": "object",
        "properties": {
          "startPage": {
            "$ref": "#/components/schemas/UserstartPage"
          },
          "showZeroes": {
            "type": "boolean"
          },
          "showTaxCodeWhenViewingPayrunEntry": {
            "type": "boolean"
          },
          "allowJournalResubmit": {
            "type": "boolean"
          },
          "hideSalaryOnEmployeeIndexPage": {
            "type": "boolean"
          },
          "enableMultiEmployerImport": {
            "type": "boolean"
          },
          "enableCovid19Features": {
            "type": "boolean"
          },
          "hidePayslipCheckboxes": {
            "type": "boolean"
          },
          "hidePayslipSearchAndSort": {
            "type": "boolean"
          },
          "showYtdInPayslipView": {
            "type": "boolean"
          },
          "enableDpsXmlUpload": {
            "type": "boolean"
          },
          "enableRtiTimestampOverride": {
            "type": "boolean"
          },
          "enablePayrunWarnings": {
            "type": "boolean"
          },
          "enableWorkingDaysOverrides": {
            "type": "boolean"
          },
          "enablePayrunPagination": {
            "type": "boolean"
          },
          "dontHideFpsEmployeeList": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "UserEmployer": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "employerId": {
            "type": "integer",
            "format": "int32"
          },
          "isOwner": {
            "type": "boolean"
          },
          "role": {
            "$ref": "#/components/schemas/UserRole"
          },
          "showOutstandingLoanBalancesOnly": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "UserIndustry": {
        "enum": [
          "NotSpecified",
          "Agriculture",
          "Apparel",
          "Banking",
          "Biotechnology",
          "Chemicals",
          "Communication",
          "Construction",
          "Consulting",
          "Education",
          "Engineering",
          "Entertainment",
          "Environmental",
          "Finance",
          "FoodAndBeverage",
          "Government",
          "Healthcare",
          "Hospitality",
          "Insurance",
          "Legal",
          "Machinery",
          "Manufacturing",
          "Media",
          "NotForProfit",
          "Other",
          "Recreation",
          "Retail",
          "Shipping",
          "Technology",
          "Telecommunications",
          "Transportation",
          "Utilities"
        ],
        "type": "string"
      },
      "UserJobType": {
        "enum": [
          "BusinessOwner",
          "PayrollManager",
          "Accountant",
          "Developer",
          "SoftwareVendor",
          "Other"
        ],
        "type": "string"
      },
      "UserRole": {
        "enum": [
          "Admin",
          "Editor",
          "Reviewer",
          "PayrollClientApprover",
          "PayrollClientEditor",
          "PayrollClientReviewer"
        ],
        "type": "string"
      },
      "UserstartPage": {
        "enum": [
          "Dashboard",
          "EmployerList",
          "EmployeeList",
          "Payroll",
          "Rti",
          "BureauDashboard"
        ],
        "type": "string"
      },
      "UtmInfo": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "nullable": true
          },
          "medium": {
            "type": "string",
            "nullable": true
          },
          "term": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "campaign": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ValueOverride": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PayrollValueType"
          },
          "value": {
            "type": "number",
            "description": "The value to use in place of the original value",
            "format": "double"
          },
          "originalValue": {
            "type": "number",
            "description": "[readonly] The original value",
            "format": "double"
          },
          "note": {
            "maxLength": 150,
            "type": "string",
            "description": "The reason given for the override",
            "nullable": true
          },
          "attachmentOrderId": {
            "type": "string",
            "description": "The Id of the AttachmentOrder. Only relevant if the Type is set to AttachmentOrderDeductions",
            "format": "uuid",
            "nullable": true
          },
          "pensionId": {
            "type": "string",
            "description": "The Id of the associated Pension. Only included if the Code is PENSION, PENSIONSS or PENSIONRAS",
            "format": "uuid",
            "nullable": true
          },
          "leaveId": {
            "type": "string",
            "description": "The Id of the associated Leave.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VarianceReport": {
        "type": "object",
        "properties": {
          "showDifferenceAsPercentage": {
            "type": "boolean"
          },
          "minimumChangePercentage": {
            "type": "number",
            "format": "double"
          },
          "primary": {
            "$ref": "#/components/schemas/GrossToNetReport"
          },
          "secondary": {
            "$ref": "#/components/schemas/GrossToNetReport"
          },
          "joiners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GrossToNetReportLine"
            },
            "nullable": true,
            "readOnly": true
          },
          "leavers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GrossToNetReportLine"
            },
            "nullable": true,
            "readOnly": true
          },
          "hasDepartments": {
            "type": "boolean",
            "readOnly": true
          },
          "commonLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GrossToNetReportLine"
            },
            "nullable": true,
            "readOnly": true
          },
          "hasVariances": {
            "type": "boolean",
            "readOnly": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "VarianceReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/VarianceReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "VeteranDetails": {
        "type": "object",
        "properties": {
          "isVeteran": {
            "type": "boolean",
            "description": "Set to true if the employee is a veteran"
          },
          "firstCivilianEmploymentDate": {
            "type": "string",
            "description": "Date of Veteran's first civilian employment",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Employment details for veterans"
      },
      "WarningsReport": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WarningsReportLine"
            },
            "nullable": true
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          }
        },
        "additionalProperties": false
      },
      "WarningsReportLine": {
        "type": "object",
        "properties": {
          "payrollCode": {
            "type": "string",
            "nullable": true
          },
          "employeeName": {
            "type": "string",
            "nullable": true
          },
          "warningType": {
            "$ref": "#/components/schemas/PayRunEntryWarningType"
          },
          "warningMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WarningsReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/WarningsReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "Webhook": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "webhookEvent": {
            "$ref": "#/components/schemas/WebhookEvent"
          },
          "url": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string",
            "description": "The Url to which the payload should be sent",
            "format": "uri"
          },
          "active": {
            "type": "boolean",
            "description": "If set to false then this Webhook will not be triggered"
          },
          "eventCount": {
            "type": "integer",
            "description": "The number of times this webhook has been triggered",
            "format": "int32"
          },
          "lastPayload": {
            "$ref": "#/components/schemas/WebhookPayload"
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "WebhookEvent": {
        "enum": [
          "Employee_Created",
          "Employee_Updated",
          "Employee_Deleted",
          "Payrun_Finalised",
          "Payrun_StateChanged",
          "PensionMembership_Created",
          "PensionMembership_Updated",
          "PensionMembership_Deleted",
          "JobCompleted"
        ],
        "type": "string"
      },
      "WebhookPayload": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 150,
            "type": "string",
            "description": "[readonly] A descriptive name for this payload",
            "nullable": true
          },
          "url": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string",
            "description": "[readonly] The Url that payload will be sent to",
            "format": "uri"
          },
          "attempts": {
            "type": "integer",
            "description": "[readonly]  The number of attempts that have been made to deliver this payload",
            "format": "int32"
          },
          "statusCode": {
            "type": "integer",
            "description": "[readonly] The status code received from the Url",
            "format": "int32"
          },
          "taskStatus": {
            "$ref": "#/components/schemas/BackgroundTaskStatus"
          },
          "statusMessage": {
            "maxLength": 150,
            "type": "string",
            "description": "[readonly]  A message to accompany the status",
            "nullable": true
          },
          "created": {
            "type": "string",
            "description": "[readonly]  The date and time this payload was created",
            "format": "date",
            "readOnly": true
          },
          "payload": {
            "description": "[readonly] the JSON payload that will be sent to the URl",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "WorkerGroup": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string"
          },
          "contributionLevelType": {
            "$ref": "#/components/schemas/PensionContributionLevelType"
          },
          "employeeContribution": {
            "type": "number",
            "format": "double"
          },
          "employeeContributionIsPercentage": {
            "type": "boolean"
          },
          "employerContribution": {
            "type": "number",
            "format": "double"
          },
          "employerContributionIsPercentage": {
            "type": "boolean"
          },
          "employerContributionTopUpPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employee Contribution",
            "format": "double"
          },
          "employerContributionIncludesNiSaving": {
            "type": "boolean",
            "description": "Employer Contribution includes the Employers NI saving"
          },
          "employerContributionNiSavingPercentage": {
            "type": "number",
            "description": "Increase Employer Contribution by this percentage of the Employers NI saving",
            "format": "double"
          },
          "isAvc": {
            "type": "boolean",
            "description": "Determines whether the workergroup uses additonal voluntary contributions.\r\nThis property will automatically be set to true for the following Contribution Level Types: TpFasterAccrual, TpAdditionalPensionContributions, TpActuariallyAdjustedBenefits, TpFamilyBenefits, tpPastAddedYears, tpHigherSalaries, tpPreston, tpElectedFurtherEmployment, LgpsAdditionalPensionContributions, LgpsSharedAdditionalPensionContributions, LgpsAdditionalRegularContributions, LgpsAddedYearsContributions, LgpsSharedAdditionalPensionLumpSump, LgpsPartTimeBuyBack, PrudentialAVC."
          },
          "additionalVoluntaryContribution": {
            "type": "number",
            "description": "Any additional voluntary amount the employee contributes towards the pension. Could be a percentage or a fixed amount depending on AvcIsPercentage.",
            "format": "double",
            "nullable": true
          },
          "avcIsPercentage": {
            "type": "boolean",
            "description": "Determines whether the Value of the Additional Voluntary Contribution is a fixed amount or a percentage,",
            "nullable": true
          },
          "employerContributionNiSaving": {
            "type": "number",
            "description": "Employers NI Saving",
            "format": "double"
          },
          "customThreshold": {
            "type": "boolean"
          },
          "lowerLimit": {
            "type": "number",
            "format": "double"
          },
          "upperLimit": {
            "type": "number",
            "format": "double"
          },
          "papdisGroup": {
            "maxLength": 40,
            "type": "string",
            "nullable": true
          },
          "papdisSubGroup": {
            "maxLength": 40,
            "type": "string",
            "nullable": true
          },
          "localAuthorityNumber": {
            "maxLength": 3,
            "pattern": "^(\\d{3})$",
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "schoolEmployerType": {
            "maxLength": 4,
            "pattern": "^(\\d{4})$",
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "matIdentifier": {
            "maxLength": 3,
            "pattern": "^(\\d{3}|)$",
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "matUniqueNumber": {
            "maxLength": 4,
            "pattern": "^(\\d{4}|)$",
            "type": "string",
            "description": "Only applicable if ContributionLevelType is TeachersPensionEnglandAndWales",
            "nullable": true
          },
          "employerReference": {
            "type": "string",
            "nullable": true
          },
          "lgpsFund": {
            "$ref": "#/components/schemas/LgpsFund"
          },
          "workerGroupId": {
            "type": "string",
            "description": "[readonly]",
            "format": "uuid"
          },
          "assumedPensionablePay": {
            "$ref": "#/components/schemas/AssumedPensionablePay"
          },
          "pensionablePayDefinition": {
            "$ref": "#/components/schemas/PensionablePayDefinition"
          },
          "payslipDescription": {
            "maxLength": 100,
            "type": "string",
            "description": "Used for overwriting the pension description that is displayed on the payslip",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "WorkingPattern": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "mon": {
            "type": "number",
            "format": "double"
          },
          "tue": {
            "type": "number",
            "format": "double"
          },
          "wed": {
            "type": "number",
            "format": "double"
          },
          "thu": {
            "type": "number",
            "format": "double"
          },
          "fri": {
            "type": "number",
            "format": "double"
          },
          "sat": {
            "type": "number",
            "format": "double"
          },
          "sun": {
            "type": "number",
            "format": "double"
          },
          "contractedWeeks": {
            "pattern": "^([0-9]|[1234][0-9]|5[0-2])(\\.\\d{0,6})?$",
            "type": "number",
            "description": "The amount of weeks an employee works, utilise for employees who aren't working full time.\r\nIf Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "fullTimeContractedWeeks": {
            "pattern": "^(52)(\\.\\d{0,6})?$",
            "type": "number",
            "description": "The amount of weeks an employee works (Full Time). If Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "fullTimeContractedHours": {
            "type": "number",
            "description": "The amount of hours an employee works (Full Time). If Null then the default is used.",
            "format": "double",
            "nullable": true
          },
          "bankHolidays": {
            "$ref": "#/components/schemas/BankHolidayCollection"
          },
          "proRataRule": {
            "$ref": "#/components/schemas/ProRataRule"
          },
          "bankHolidayDates": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "date-time"
            },
            "description": "[readonly] The dates that are classed as Bank Holidays for this WorkingPattern",
            "nullable": true
          },
          "workingPatternHoursType": {
            "$ref": "#/components/schemas/WorkingPatternHoursType"
          },
          "isDefault": {
            "type": "boolean"
          },
          "effectiveFrom": {
            "type": "string",
            "description": "The date when the assignment of the Working Pattern becomes effective.\r\nRequired for a Shift WorkingPattern to determine when it starts",
            "format": "date",
            "nullable": true
          },
          "workingPatternType": {
            "$ref": "#/components/schemas/WorkingPatternType"
          },
          "shiftWorkingPatternDays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShiftWorkingPatternDay"
            },
            "nullable": true
          },
          "workingPatternEffectiveFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "[readonly] The unique id of the object",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "WorkingPatternHoursType": {
        "enum": [
          "HoursPerDay",
          "HoursPerWeek",
          "HoursPerPattern"
        ],
        "type": "string"
      },
      "WorkingPatternType": {
        "enum": [
          "Standard",
          "Shift"
        ],
        "type": "string"
      },
      "YearEnd": {
        "type": "object",
        "properties": {
          "endingYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "startingYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "createEpsForFinalSubmission": {
            "type": "boolean",
            "description": "[readonly] Whether or not the system will automatically create an EPS to tell HMRC the year has ended."
          },
          "createEpsForEmploymentAllowance": {
            "type": "boolean",
            "description": "[readonly] Whether or not the system will automatically create an EPS to tell HMRC you qualify for Employment Allowance."
          },
          "createExb": {
            "type": "boolean",
            "description": "[readonly] Whether or not the system will automatically create an EXB to inform HMRC of Expenses and Benefits"
          },
          "setEmploymentAllowance": {
            "type": "number",
            "description": "[readonly] If the Employment Allowance needs to be changed, this indicates the new value",
            "format": "double",
            "nullable": true
          },
          "taxCodeChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/YearEndTaxCodeChange"
            },
            "description": "[readonly] Details of changes that wil be made to Tax Codes",
            "nullable": true
          },
          "removeWeek1Month1": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] Employees that will have the Week1Month1 flag removed from their tax code",
            "nullable": true
          },
          "emailP60": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] Employees who will be automatically emailed P60s",
            "nullable": true
          },
          "pushP60": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalDataProviderId"
            },
            "description": "[readonly] ExternalDataProviderIds to which P60s can be pushed",
            "nullable": true
          },
          "emailCisStatement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "description": "[readonly] Subcontractors who will be automatically sent an annual CIS Statement",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This model gives you a summary of what will happen when you confirm the closing of one year and the start of the next"
      },
      "YearEndTaxCodeChange": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Item"
          },
          "currentCode": {
            "type": "string",
            "description": "[readonly] The Employees current tax code",
            "nullable": true
          },
          "newCode": {
            "type": "string",
            "description": "[readonly] The new TaxCode for the employee",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Forms part of the YearEnd model to list changes to Tax Codes"
      },
      "YtdReport": {
        "type": "object",
        "properties": {
          "payrun": {
            "$ref": "#/components/schemas/PayRun"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmployeeYtdValues"
            },
            "nullable": true
          },
          "report": {
            "$ref": "#/components/schemas/Report"
          },
          "taxYear": {
            "$ref": "#/components/schemas/TaxYear"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "isDraft": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "YtdReportReportResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "[readonly] The content-type, this would usually be the same as the accept header you provided when you requested the report",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "[readonly] This could contain a link to a PDF file, HTML content or other content, depending on the Type value.",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/YtdReport"
          },
          "stream": {
            "type": "string",
            "description": "byte array",
            "format": "byte",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to encapsulate a response for any of the reports.\r\nSee the Introduction Guide for Reports for more details"
      },
      "YtdValue": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PayrollValueType"
          },
          "broughtForward": {
            "type": "number",
            "format": "double"
          },
          "period": {
            "type": "number",
            "format": "double"
          },
          "value": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ZeroPaidFilter": {
        "enum": [
          "NegativePaid",
          "ZeroPaid",
          "NonZeroPaid"
        ],
        "type": "string"
      }
    },
    "securitySchemes": {
      "Basic": {
        "type": "http",
        "description": "If you have an API Key then enter is as the password.<br> The username can be anything you like.",
        "scheme": "basic"
      }
    }
  },
  "security": [
    {
      "Basic": [ ]
    },
    {
      "oauth2": [
        "openid",
        "profile",
        "email"
      ]
    }
  ]
}