{
  "openapi": "3.0.4",
  "info": {
    "title": "Vsp.Employer",
    "description": "",
    "version": "v1"
  },
  "servers": [
    {
      "url": "/employer"
    }
  ],
  "paths": {
    "/providers/employers/departments/{departmentId}/archive": {
      "patch": {
        "tags": [
          "Department"
        ],
        "summary": "Archive a department.",
        "description": "**Activity name**:\n  - `PatchArchiveDepartmentByDepartmentId`\n\n**Validation errors**:\n  - `API_Employer_Department_CannotArchiveWithActiveSubDepartments`: It is not possible to archive a department that has active sub-departments.\n  - `API_Employer_Department_CannotDearchiveWithArchivedParent`: It is not possible to dearchive a department when the parent department is still archived.\n\n\nArchives a department by department id. \nWhen a date is supplied, the department will be archived with the provided archive date; future, present and past dates are allowed.\nWhen null is sent supplied, the department will be unarchived.",
        "parameters": [
          {
            "name": "departmentId",
            "in": "path",
            "description": "The unique identifier of the department.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "0d55fc93-886a-4f70-a80e-5ed984da9ccb"
          }
        ],
        "requestBody": {
          "description": "The archive details for the department.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Vsp.Employer.Domain.Department.v20180101.Models.ArchiveDepartmentPatchModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Vsp.Employer.Domain.Department.v20180101.Models.ArchiveDepartmentPatchModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Vsp.Employer.Domain.Department.v20180101.Models.ArchiveDepartmentPatchModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.Infrastructure.DetailResult`1[[Vsp.Employer.Domain.Department.v20180101.Models.DepartmentModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestDetailResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.UnauthorizedResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.ForbiddenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/providers/users/{userId}/employers": {
      "get": {
        "tags": [
          "Employer"
        ],
        "summary": "Employers by user id with points of contact.",
        "description": "**Activity name**:\n  - `GetEmployersByUserId`\n\nRetrieves a list of employers accessible to the specified user via teams,\nincluding their points of contact.",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "3b34f479-7b46-4944-b579-acee7257e0cc"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.Infrastructure.ListResult`1[[Vsp.Employer.Domain.Employer.v20180101.Models.EmployerModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.UnauthorizedResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.ForbiddenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/providers/employers/departments/{departmentId}/employments/minimized": {
      "get": {
        "tags": [
          "Employment"
        ],
        "summary": "Employments (minimized) by department id.",
        "description": "**Activity name**:\n  - `GetEmploymentsMinimizedByDepartmentId`\n\nRetrieves a list of employments which are part of a department on a specific reference date.",
        "parameters": [
          {
            "name": "departmentId",
            "in": "path",
            "description": "The unique identifier of the department.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "3b34f479-7b46-4944-b579-acee7257e0cc"
          },
          {
            "name": "referenceDate",
            "in": "query",
            "description": "Optional reference date, will use today when not specified.",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-03-31"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.Infrastructure.ListResult`1[[Vsp.Employer.Domain.Employment.v20180101.Models.EmploymentMinimizedModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.UnauthorizedResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.ForbiddenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/providers/{providerId}/pointsofcontact": {
      "get": {
        "tags": [
          "Points of contact"
        ],
        "summary": "List of the points of contact",
        "description": "**Activity name**:\n  - ` GetPointsOfContactByProviderId`\n\nRetrieves a list of the points of contact by provider id.",
        "parameters": [
          {
            "name": "providerId",
            "in": "path",
            "description": "The unique identifier of the provider.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "3b34f479-7b46-4944-b579-acee7257e0cc"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.Infrastructure.ListResult`1[[Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.UnauthorizedResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.ForbiddenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/providers/users/{userId}/pointsofcontact": {
      "patch": {
        "tags": [
          "Points of contact"
        ],
        "summary": "Patch points of contact by user id",
        "description": "**Activity name**:\n  - `PatchPointsOfContactByUserId`\n\nPatches the points of contact for the specified user.",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "3b34f479-7b46-4944-b579-acee7257e0cc"
          }
        ],
        "requestBody": {
          "description": "The points of contact patch payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointsOfContactPatchModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointsOfContactPatchModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointsOfContactPatchModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.Infrastructure.ListResult`1[[Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.UnauthorizedResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.ForbiddenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/providers/pointsofcontact/metadata": {
      "get": {
        "tags": [
          "Points of contact"
        ],
        "summary": "Metadata for points of contact.",
        "description": "**Activity name**:\n  - `GetPointsOfContactMetadataByUserId`\n\nRetrieves metadata for points of contact by user id",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.Infrastructure.ListResult`1[[Vsp.ApiBase.Models.MetadataViewModel, Vsp.ApiBase, Version=9.4.4.0, Culture=neutral, PublicKeyToken=null]]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.UnauthorizedResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.ForbiddenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Vsp.ApiBase.Models.MetadataViewModel": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": { },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.ApiBase.Models.OptionsViewModel": {
        "type": "object",
        "properties": {
          "key": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.ApiBase.OpenApi.Examples.BadRequestDetailResponse": {
        "type": "object",
        "properties": {
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestOperationMessage"
            },
            "nullable": true
          },
          "content": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "version": {
            "$ref": "#/components/schemas/Vsp.Infrastructure.ResourceVersionModel"
          }
        },
        "additionalProperties": false
      },
      "Vsp.ApiBase.OpenApi.Examples.BadRequestListResponse": {
        "type": "object",
        "properties": {
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.ApiBase.OpenApi.Examples.BadRequestOperationMessage"
            },
            "nullable": true
          },
          "_embedded": {
            "type": "array",
            "items": { },
            "nullable": true
          },
          "totalSize": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "$ref": "#/components/schemas/Vsp.Infrastructure.ResourceVersionModel"
          }
        },
        "additionalProperties": false
      },
      "Vsp.ApiBase.OpenApi.Examples.BadRequestOperationMessage": {
        "type": "object",
        "properties": {
          "messageCode": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "properties": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.ApiBase.OpenApi.Examples.ForbiddenResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.ApiBase.OpenApi.Examples.UnauthorizedResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.Department.v20180101.Models.ArchiveDepartmentPatchModel": {
        "type": "object",
        "properties": {
          "archivedDate": {
            "type": "string",
            "description": "The date when the department should be archived, when null is supplied as value, the department is reactivated.",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the archive details for a department update."
      },
      "Vsp.Employer.Domain.Department.v20180101.Models.ArchiveModel": {
        "type": "object",
        "properties": {
          "isArchived": {
            "type": "boolean",
            "description": "Indicates whether the department is archived (ArchivedDate is in the past or present)."
          },
          "archivedDate": {
            "type": "string",
            "description": "The archived date of the department.",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents archive information for a department."
      },
      "Vsp.Employer.Domain.Department.v20180101.Models.DepartmentModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the department.",
            "format": "uuid"
          },
          "code": {
            "type": "integer",
            "description": "The numeric code of the department.",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "The description of the department.",
            "nullable": true
          },
          "partOfDepartment": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Department.v20180101.Models.PartOfDepartmentModel"
          },
          "emailLeaveRequest": {
            "type": "string",
            "description": "The email address for leave requests.",
            "nullable": true
          },
          "archive": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Department.v20180101.Models.ArchiveModel"
          }
        },
        "additionalProperties": false,
        "description": "Represents a department."
      },
      "Vsp.Employer.Domain.Department.v20180101.Models.PartOfDepartmentModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the parent department.",
            "format": "uuid"
          },
          "code": {
            "type": "integer",
            "description": "The  numeric code of the parent department.",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "The description of the parent department.",
            "nullable": true
          },
          "archive": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Department.v20180101.Models.ArchiveModel"
          }
        },
        "additionalProperties": false,
        "description": "Represents a parent department."
      },
      "Vsp.Employer.Domain.Employer.v20180101.Models.EmployerModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of the employer.",
            "format": "uuid",
            "example": "3b34f479-7b46-4944-b579-acee7257e0cc"
          },
          "companyName": {
            "type": "string",
            "description": "Name of the company.",
            "nullable": true,
            "example": "Loket.nl B.V."
          },
          "employerNumber": {
            "type": "integer",
            "description": "The employer number is used in various overviews and exports to identify a specific employer in Loket (please note: this is not the identifier used in the REST API).",
            "format": "int32",
            "example": 12345
          },
          "administrationNumber": {
            "type": "string",
            "description": "A free field that is most commonly used to store the Debtors Number the provider uses for the employer. This field is used as a key field in some of the existing SOAP webservices.",
            "nullable": true,
            "example": "DEB-10001"
          },
          "groupCode": {
            "type": "integer",
            "description": "The groupcode is used for grouping employers. It is used for filtering output and processes (only include employers in group 40 in this report).",
            "format": "int32",
            "nullable": true,
            "example": 40
          },
          "lastPayrollYear": {
            "type": "integer",
            "description": "The last payroll year across all administrations for this employer.",
            "format": "int32",
            "nullable": true
          },
          "pointsOfContact": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Employer.Domain.Employer.v20180101.Models.EmployerPointOfContactModel"
            },
            "description": "The points of contact associated with this employer.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.Employer.v20180101.Models.EmployerPointOfContactModel": {
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Shared.Models.UserMinimizedModel"
          },
          "pointOfContactType": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactTypeKeyValueModel"
          },
          "startDate": {
            "type": "string",
            "description": "The start date of the point of contact.",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the point of contact.",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.Employment.v20180101.Models.EmployeeMinimizedModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of an object (GUID/UUID)",
            "format": "uuid",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "employeeNumber": {
            "type": "integer",
            "description": "The employee number to uniquely identify a employee within a employer.",
            "format": "int32",
            "example": 1234
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the employee",
            "nullable": true,
            "example": "Jan"
          },
          "fullLastName": {
            "type": "string",
            "description": "The full last name contains the last name of the employee and - if applicable - the partners last name. Both including infixes. Regardless of howToFormatLastName. Intended to be used for searching in Frontend applications.",
            "nullable": true,
            "example": "de Jong-van der Berg"
          },
          "formattedName": {
            "type": "string",
            "description": "Formatted name of the employee based on the value of howToFormatLastName",
            "nullable": true,
            "example": "J. de Jong"
          },
          "dateOfBirth": {
            "type": "string",
            "description": "The date of birth",
            "format": "date",
            "example": "1985-06-15"
          },
          "photo": {
            "type": "string",
            "description": "A photo of the employee to use as a avatar/profile picture. The last part of the returned endpoint is the version of the logo this allows users to cache the image. Changing the value of the version will not influence the output.",
            "format": "uri",
            "nullable": true,
            "example": "https://api.loket.nl/v2/providers/employers/employees/3fa85f64-5717-4562-b3fc-2c963f66afa6/photo/a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "emailBusiness": {
            "type": "string",
            "description": "Business email address",
            "nullable": true,
            "example": "j.dejong@example.nl"
          },
          "email": {
            "type": "string",
            "description": "Personal email address",
            "nullable": true,
            "example": "jan.dejong@personal.nl"
          },
          "phoneBusiness": {
            "type": "string",
            "description": "Business phone number",
            "nullable": true,
            "example": "+31 20 1234567"
          },
          "mobileBusiness": {
            "type": "string",
            "description": "Business mobile phone number",
            "nullable": true,
            "example": "+31 6 12345678"
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "nullable": true,
            "example": "+31 30 7654321"
          },
          "mobile": {
            "type": "string",
            "description": "Mobile phone number",
            "nullable": true,
            "example": "+31 6 87654321"
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.Employment.v20180101.Models.EmploymentMinimizedModel": {
        "type": "object",
        "properties": {
          "employee": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Employment.v20180101.Models.EmployeeMinimizedModel"
          },
          "id": {
            "type": "string",
            "description": "The unique identifier of an object (GUID/UUID)",
            "format": "uuid",
            "example": "7d8e9f10-1234-5678-9abc-def012345678"
          },
          "startDate": {
            "type": "string",
            "description": "The date on which this employment starts. NL: DatumInDienst",
            "format": "date",
            "example": "2020-01-15"
          },
          "commissionUntilDate": {
            "type": "string",
            "description": "The date on which the employment will end. NL: AanstellingTot",
            "format": "date",
            "nullable": true,
            "example": "2025-12-31"
          },
          "endDate": {
            "type": "string",
            "description": "The date on which the employment ends. NL: DatumUitDienst",
            "format": "date",
            "nullable": true,
            "example": "2025-12-31"
          },
          "payrollAdministration": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Employment.v20180101.Models.PayrollAdministrationModel"
          },
          "nonPayrollAdministration": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Employment.v20180101.Models.NonPayrollAdministrationModel"
          },
          "employmentDurationType": {
            "$ref": "#/components/schemas/Vsp.ApiBase.Models.OptionsViewModel"
          },
          "incomeRelationshipNumber": {
            "type": "integer",
            "description": "The income relationship number that is required in the tax return. Together with the citizen service number (burgerservicenummer, BSN) and wage tax number, the income relationship number uniquely identifies an employment. NL: NummerInkomstenVerhouding",
            "format": "int32",
            "example": 1
          },
          "payrollId": {
            "type": "integer",
            "description": "The payrolling number for this employment of the employee. Used by the payroll engine. This number is automatically generated and cannot be changed by the user. NL: PersoneelsnummerVerloning",
            "format": "int32",
            "example": 10001
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.Employment.v20180101.Models.NonPayrollAdministrationModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of an object (GUID/UUID)",
            "format": "uuid",
            "example": "a1b2c3d4-5678-9012-3456-789012345678"
          },
          "name": {
            "type": "string",
            "description": "The name of the non-payroll administration",
            "nullable": true,
            "example": "External Contractors"
          },
          "description": {
            "type": "string",
            "description": "The description of the non-payroll administration",
            "nullable": true,
            "example": "Administration for external contractors"
          }
        },
        "additionalProperties": false,
        "description": "Non-payroll administration. This field cannot simultaneously have a value with payrollAdministration (only one can have a value at a time). nonPayrollAdministration is a metadata field within the employer context. Possible values can be managed by the user."
      },
      "Vsp.Employer.Domain.Employment.v20180101.Models.PayrollAdministrationModel": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of an object (GUID/UUID)",
            "format": "uuid",
            "example": "b2c3d4e5-6789-0123-4567-890123456789"
          },
          "name": {
            "type": "string",
            "description": "The name of the payroll administration",
            "nullable": true,
            "example": "Main Payroll"
          },
          "description": {
            "type": "string",
            "description": "The description of the payroll administration",
            "nullable": true,
            "example": "Primary payroll administration for full-time employees"
          },
          "clientNumber": {
            "type": "integer",
            "description": "The client number associated with the payroll administration",
            "format": "int32",
            "nullable": true,
            "example": 12345
          }
        },
        "additionalProperties": false,
        "description": "Payroll administration. This field cannot simultaneously have a value with nonPayrollAdministration (only one can have a value at a time). payrollAdministration is a metadata field within the employer context. Possible values can be managed by the user."
      },
      "Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactDetailPatchModel": {
        "required": [
          "employerId",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "employerId": {
            "type": "string",
            "description": "The unique identifier of the employer.",
            "format": "uuid",
            "example": "3b34f479-7b46-4944-b579-acee7257e0cc"
          },
          "startDate": {
            "type": "string",
            "description": "The start date of this point of contact relation.",
            "format": "date",
            "example": "2024-01-01"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of this point of contact relation.",
            "format": "date",
            "nullable": true,
            "example": "2024-12-31"
          }
        },
        "additionalProperties": false,
        "description": "Point of contact detail for a single employer period.\nExample: employer `3b34f479-7b46-4944-b579-acee7257e0cc` active from `2024-01-01` until `2024-12-31`."
      },
      "Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of the point of contact.",
            "format": "uuid",
            "example": "6d8bf35f-9117-4f58-bf7f-a45f2f8f0f34"
          },
          "employer": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Shared.Models.EmployerMinimizedModel"
          },
          "user": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.UserModel"
          },
          "startDate": {
            "type": "string",
            "description": "The start date of the point of contact.",
            "format": "date",
            "example": "2024-01-01"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the point of contact.",
            "format": "date",
            "nullable": true,
            "example": "2024-12-31"
          },
          "pointOfContactType": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactTypeKeyValueModel"
          },
          "dateTimeCreated": {
            "type": "string",
            "description": "The date and time when the point of contact was created.",
            "format": "date-time",
            "example": "2024-01-01T12:00:00.000"
          },
          "createdBy": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Shared.Models.UserMinimizedModel"
          },
          "dateTimeLastModified": {
            "type": "string",
            "description": "The date and time when the point of contact was last modified.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-01T14:15:00Z"
          },
          "lastModifiedBy": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Shared.Models.UserMinimizedModel"
          },
          "lastPayrollYear": {
            "type": "integer",
            "description": "The most recent payroll year for the employer.",
            "format": "int32",
            "nullable": true,
            "example": 2024
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactTypeKeyValueModel": {
        "type": "object",
        "properties": {
          "key": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointsOfContactPatchModel": {
        "required": [
          "pointOfContactType",
          "pointsOfContact"
        ],
        "type": "object",
        "properties": {
          "pointOfContactType": {
            "type": "integer",
            "description": "The selected point of contact type.\nFor possible values we refer to the metadata endpoint `GET employer/providers/pointsofcontact/metadata`.",
            "format": "int32",
            "example": 1
          },
          "pointsOfContact": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactDetailPatchModel"
            },
            "description": "Collection of points of contact details to patch.",
            "example": [
              {
                "employerId": "3b34f479-7b46-4944-b579-acee7257e0cc",
                "startDate": "2024-01-01",
                "endDate": "2024-12-31"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Patch payload for updating points of contact by user."
      },
      "Vsp.Employer.Domain.PointOfContact.v20180101.Models.UserModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of the user.",
            "format": "uuid",
            "example": "9f5f6c59-12ac-4e11-8a5f-4e4fd0189c71"
          },
          "initials": {
            "type": "string",
            "description": "The initials of the user.",
            "nullable": true,
            "example": "J."
          },
          "prefix": {
            "type": "string",
            "description": "The prefix of the user.",
            "nullable": true,
            "example": "van"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "nullable": true,
            "example": "Dijk"
          },
          "formattedName": {
            "type": "string",
            "description": "Preformatted user name for displaying. \"<lastname>\", \"<initials>\" \"<prefix>\".",
            "nullable": true,
            "example": "Dijk, J. van"
          },
          "username": {
            "type": "string",
            "description": "The username of the user.",
            "nullable": true,
            "example": "j.dijk"
          },
          "email": {
            "type": "string",
            "description": "The email of the user.",
            "nullable": true,
            "example": "j.dijk@example.com"
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.Shared.Models.EmployerMinimizedModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of the employer.",
            "format": "uuid",
            "example": "3b34f479-7b46-4944-b579-acee7257e0cc"
          },
          "companyName": {
            "type": "string",
            "description": "Name of the company.",
            "nullable": true,
            "example": "Loket.nl B.V."
          },
          "employerNumber": {
            "type": "integer",
            "description": "The employer number is used in various overviews and exports to identify a specific employer in Loket (please note: this is not the identifier used in the REST API).",
            "format": "int32",
            "example": 12345
          },
          "administrationNumber": {
            "type": "string",
            "description": "A free field that is most commonly used to store the Debtors Number the provider uses for the employer. This field is used as a key field in some of the existing SOAP webservices.",
            "nullable": true,
            "example": "DEB-10001"
          },
          "groupCode": {
            "type": "integer",
            "description": "The groupcode is used for grouping employers. It is used for filtering output and processes (only include employers in group 40 in this report).",
            "format": "int32",
            "nullable": true,
            "example": 40
          }
        },
        "additionalProperties": false
      },
      "Vsp.Employer.Domain.Shared.Models.UserMinimizedModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of the user.",
            "format": "uuid",
            "example": "9f5f6c59-12ac-4e11-8a5f-4e4fd0189c71"
          },
          "initials": {
            "type": "string",
            "description": "The initials of the user.",
            "nullable": true,
            "example": "J."
          },
          "prefix": {
            "type": "string",
            "description": "The prefix of the user.",
            "nullable": true,
            "example": "van"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "nullable": true,
            "example": "Dijk"
          },
          "formattedName": {
            "type": "string",
            "description": "Preformatted user name for displaying. \"<lastname>\", \"<initials>\" \"<prefix>\".",
            "nullable": true,
            "example": "Dijk, J. van"
          }
        },
        "additionalProperties": false
      },
      "Vsp.Infrastructure.DetailResult`1[[Vsp.Employer.Domain.Department.v20180101.Models.DepartmentModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "version": {
            "$ref": "#/components/schemas/Vsp.Infrastructure.ResourceVersionModel"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Infrastructure.OperationMessage"
            },
            "nullable": true
          },
          "content": {
            "$ref": "#/components/schemas/Vsp.Employer.Domain.Department.v20180101.Models.DepartmentModel"
          }
        },
        "additionalProperties": false
      },
      "Vsp.Infrastructure.ListResult`1[[Vsp.ApiBase.Models.MetadataViewModel, Vsp.ApiBase, Version=9.4.4.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSize": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "$ref": "#/components/schemas/Vsp.Infrastructure.ResourceVersionModel"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Infrastructure.OperationMessage"
            },
            "nullable": true
          },
          "_embedded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.ApiBase.Models.MetadataViewModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Infrastructure.ListResult`1[[Vsp.Employer.Domain.Employer.v20180101.Models.EmployerModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSize": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "$ref": "#/components/schemas/Vsp.Infrastructure.ResourceVersionModel"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Infrastructure.OperationMessage"
            },
            "nullable": true
          },
          "_embedded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Employer.Domain.Employer.v20180101.Models.EmployerModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Infrastructure.ListResult`1[[Vsp.Employer.Domain.Employment.v20180101.Models.EmploymentMinimizedModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSize": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "$ref": "#/components/schemas/Vsp.Infrastructure.ResourceVersionModel"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Infrastructure.OperationMessage"
            },
            "nullable": true
          },
          "_embedded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Employer.Domain.Employment.v20180101.Models.EmploymentMinimizedModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Infrastructure.ListResult`1[[Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactModel, Vsp.Employer.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]": {
        "type": "object",
        "properties": {
          "totalSize": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "$ref": "#/components/schemas/Vsp.Infrastructure.ResourceVersionModel"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Infrastructure.OperationMessage"
            },
            "nullable": true
          },
          "_embedded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vsp.Employer.Domain.PointOfContact.v20180101.Models.PointOfContactModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Infrastructure.OperationMessage": {
        "type": "object",
        "properties": {
          "messageCode": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "properties": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vsp.Infrastructure.ResourceVersionModel": {
        "type": "object",
        "properties": {
          "obsoleteDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "resourceVersion": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "password": {
            "tokenUrl": "https://oauth.loket.nl/token",
            "scopes": { }
          }
        }
      },
      "Bearer": {
        "type": "apiKey",
        "description": "Authorization header using the Bearer scheme. \n Enter 'Bearer' [space] and then your token in the text input below.\nExample: \"Bearer 12345abcdef\"",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "oauth2": [ ]
    },
    {
      "Bearer": [ ]
    }
  ]
}