openapi: 3.0.2
info:
  title: SETU API for Planning and Scheduling
  description: >
    Set of API specifications that allows for exchange of information related to
    the planning and scheduling of flexworkers.

    Moreover, the API allows to exchange information regarding human resource
    availability (constraints), planning request, and planning assignment. 


    The JSON and XML schema's for the requestBody of each API call can be found
    on the [SETU
    GitHub](https://github.com/setu-standards/xml-specifications/tree/main/setu-planning)
  license:
    name: MIT
  version: 1
externalDocs:
  description: More about SETU
  url: https://www.setu.nl
tags:
  - name: Planning constraints
    description: Set of APIs for availability registration of human resources.
  - name: Planning request
    description: Set of APIs for requesting fulfillment of a position.
  - name: Planning assignment
    description: Set of APIs for communicating assignment of human resources to a position.
  - name: Scenario 1 | Planning software APIs
    description: Set of APIs to be implemented by the planning software.
  - name: Scenario 1 | Customer backoffice APIs
    description: Set of APIs to be implemented by the backoffice of the customer.
  - name: Scenario 2 | Planning software APIs
    description: Set of APIs to be implemented by the planning software.
  - name: Scenario 2 | Staffing supplier backoffice APIs
    description: Set of APIs to be implemented by the backoffice of the staffing supplier.
paths:
  /planning/requests:
    post:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Submit a new planning request
      parameters:
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: |
          Complete planning request message as specified by SETU.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlanningRequest_v1.0'
          application/xml:
            schema:
              $ref: '#/components/schemas/PlanningRequest_v1.0'
      responses:
        '201':
          description: >-
            201 Created | The created planning request (as submitted in the
            request body)
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningRequest_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningRequest_v1.0'
  /planning/requests/{id}:
    get:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Get the information about a existing planning request
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: |
            The planning request as specified by SETU.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningRequest_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningRequest_v1.0'
    put:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: >-
        Update an existing planning request as a whole. The request body
        replaces all previous shared information of the resource
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: |
          Complete planning request message as specified by SETU.

             Restriction:
            - In case of a PUT (REST APIs and Action codes), it is not possible to modify the element 'position id ref', 'position task/id ref', or 'position location ref' under the container element 'position profile'. Modifying the content of these elements can result in a new planning request or assignment, and for this purpose, a POST is intended.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlanningRequest_v1.0'
          application/xml:
            schema:
              $ref: '#/components/schemas/PlanningRequest_v1.0'
      responses:
        '200':
          description: >-
            200 OK | The updated planning request (as submitted in the request
            body)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningRequest_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningRequest_v1.0'
    delete:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Remove an existing planning request
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
      responses:
        '204':
          description: The planning request is succesfully removed
  /planning/requests/{id}/periodic-lines:
    post:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Add a new periodic planning line to an existing planning request
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          A periodic planning request line. This is a subset of the Planning
          request message specification.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-request-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-request-line'
      responses:
        '200':
          description: The created planning request line
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-request-line'
  /planning/requests/{id}/single-lines:
    post:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Add a new single planning line to an existing planning request
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          A single planning request line. This is a subset of the Planning
          request message specification.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-request-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-request-line'
      responses:
        '200':
          description: The created planning request line
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-request-line'
  /planning/requests/{id}/lines/{lineId}:
    get:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Get the information about an existing planning request line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: path
          name: lineId
          description: The identifier of a specific line within the planning request
          required: true
          schema:
            type: string
          example: 0d281aa5-5000-4b29-81f9-16fb4e69557b
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: The planning request line (periodic or single line)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-request-line'
    put:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Update an existing planning line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: path
          name: lineId
          description: The identifier of a specific line within the planning request
          required: true
          schema:
            type: string
          example: 0d281aa5-5000-4b29-81f9-16fb4e69557b
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: A planning request line (periodic or single line)
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-request-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-request-line'
      responses:
        '200':
          description: The planning request line (periodic or single line)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-request-line'
    delete:
      tags:
        - Planning request
        - Scenario 1 | Planning software APIs
      summary: Remove an existing planning-request line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: path
          name: lineId
          description: The identifier of a specific line within the planning request
          required: true
          schema:
            type: string
          example: 0d281aa5-5000-4b29-81f9-16fb4e69557b
      responses:
        '200':
          description: The planning request line is succesfully removed
  /planning/requests/{id}/assignments:
    get:
      tags:
        - Planning assignment
        - Scenario 1 | Planning software APIs
      summary: Get list of planning assignments related to a planning request
      parameters:
        - in: path
          name: id
          description: The identifier of the planning request
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: >
            List of planning assignment messages as specified by SETU.

            See message specification
            https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_2c67bb3d-b1c1-423b-90d5-8cac64eda603
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PlanningAssignment_v1.0'
                xml:
                  wrapped: true
                  name: Assignments
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PlanningAssignment_v1.0'
  /planning/assignments:
    post:
      tags:
        - Planning assignment
        - Scenario 1 | Customer backoffice APIs
        - Scenario 2 | Staffing supplier backoffice APIs
      summary: Submit a new planning assignment
      parameters:
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          Complete planning assignment message as specified by SETU.

          See message specification
          https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_2c67bb3d-b1c1-423b-90d5-8cac64eda603
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/PlanningAssignment_v1.0'
          application/json:
            schema:
              $ref: '#/components/schemas/PlanningAssignment_v1.0'
      responses:
        '201':
          description: >-
            201 Created | The created planning assignment (as submitted in the
            request body)
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningAssignment_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningAssignment_v1.0'
  /planning/assignments/{id}:
    get:
      tags:
        - Planning assignment
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Get information of an existing planning assignment
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment as a whole
          required: true
          schema:
            type: string
          example: 5dbca640-358a-4558-a095-ecbb85ebe7d9
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: >
            The planning assignment as specified by SETU.

            See message specification
            https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_2c67bb3d-b1c1-423b-90d5-8cac64eda603
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningAssignment_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningAssignment_v1.0'
    put:
      tags:
        - Planning assignment
        - Scenario 1 | Customer backoffice APIs
        - Scenario 2 | Staffing supplier backoffice APIs
      summary: >-
        Update an existing planning assignment as a whole. The request body
        replaces all previous shared information of the resource
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment as a whole
          required: true
          schema:
            type: string
          example: 5dbca640-358a-4558-a095-ecbb85ebe7d9
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          Complete planning assignment message as specified by SETU.

          See message specification
          https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_2c67bb3d-b1c1-423b-90d5-8cac64eda603


          Restriction:
            - In case of a PUT (REST APIs and Action codes), it is not possible to modify the element 'position id ref', 'position task/id ref', or 'position location ref' under the container element 'position profile'. Modifying the content of these elements can result in a new planning request or assignment, and for this purpose, a POST is intended.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlanningAssignment_v1.0'
          application/xml:
            schema:
              $ref: '#/components/schemas/PlanningAssignment_v1.0'
      responses:
        '200':
          description: >-
            200 OK | The updated planning assignment (as submitted in the
            request body)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningAssignment_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningAssignment_v1.0'
    delete:
      tags:
        - Planning assignment
        - Scenario 1 | Customer backoffice APIs
        - Scenario 2 | Staffing supplier backoffice APIs
      summary: Remove an existing planning assignment
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment
          required: true
          schema:
            type: string
          example: 5dbca640-358a-4558-a095-ecbb85ebe7d9
      responses:
        '204':
          description: The planning assignment is succesfully removed
  /planning/assignments/{id}/periodic-lines:
    post:
      tags:
        - Planning assignment
        - Scenario 1 | Customer backoffice APIs
        - Scenario 2 | Staffing supplier backoffice APIs
      summary: Add a new periodic planning line to an existing planning assignment
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          A periodic planning assignment line. This is a subset of the Planning
          assignment message specification.

          See message specification
          https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_2c67bb3d-b1c1-423b-90d5-8cac64eda603
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-assignment-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-assignment-line'
      responses:
        '200':
          description: The created planning assignment line
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-assignment-line'
  /planning/assignments/{id}/single-lines:
    post:
      tags:
        - Planning assignment
        - Scenario 1 | Customer backoffice APIs
        - Scenario 2 | Staffing supplier backoffice APIs
      summary: Add a new single planning line to an existing planning assignment
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          A single planning assignment line. This is a subset of the Planning
          assignment message specification.

          See message specification
          https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_2c67bb3d-b1c1-423b-90d5-8cac64eda603
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-assignment-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-assignment-line'
      responses:
        '200':
          description: The created planning assignment line
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-assignment-line'
  /planning/assignments/{id}/lines/{lineId}:
    get:
      tags:
        - Planning assignment
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Get the information about an existing planning assignment line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: path
          name: lineId
          description: The identifier of a specific line within the planning assignment
          required: true
          schema:
            type: string
          example: 0d281aa5-5000-4b29-81f9-16fb4e69557b
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: The planning assignment line (periodic or single line)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-assignment-line'
    put:
      tags:
        - Planning assignment
        - Scenario 1 | Customer backoffice APIs
        - Scenario 2 | Staffing supplier backoffice APIs
      summary: Update an existing planning assignment line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: path
          name: lineId
          description: The identifier of a specific line within the planning assignment
          required: true
          schema:
            type: string
          example: 0d281aa5-5000-4b29-81f9-16fb4e69557b
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: A planning assignment line (periodic or single line)
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-assignment-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-assignment-line'
      responses:
        '200':
          description: The planning assignment line (periodic or single line)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-assignment-line'
    delete:
      tags:
        - Planning assignment
        - Scenario 1 | Customer backoffice APIs
        - Scenario 2 | Staffing supplier backoffice APIs
      summary: Remove an existing planning assignment line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning assignment as a whole
          required: true
          schema:
            type: string
          example: 049b4540-620f-434a-bfd1-d09f9e8cdc8c
        - in: path
          name: lineId
          description: The identifier of a specific line within the planning request
          required: true
          schema:
            type: string
          example: 0d281aa5-5000-4b29-81f9-16fb4e69557b
      responses:
        '200':
          description: The planning assignment line is succesfully removed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-assignment-line'
  /planning/constraints:
    get:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Get availability information for a human resource
      parameters:
        - in: query
          name: hrId
          description: >-
            The identifier of the human resource for which the constraints are
            requested
          required: true
          schema:
            type: string
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: List of availability constraints of the human resource
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PlanningConstraints_v1.0'
                xml:
                  name: Constraints
                  wrapped: true
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PlanningConstraints_v1.0'
    post:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: >-
        Submit additional availability information of a human resource by means
        of a planning constraints object
      parameters:
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          Complete planning constraints message as specified by SETU.

          See message specification
          https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_4ccb3cb0-cc4b-422f-b506-3a09ff9cd1bb
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlanningConstraints_v1.0'
          application/xml:
            schema:
              $ref: '#/components/schemas/PlanningConstraints_v1.0'
      responses:
        '201':
          description: The added planning constraints (same as request body)
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningConstraints_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningConstraints_v1.0'
  /planning/constraints/{id}:
    get:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Get information about an existing planning constraints object
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: >
            Planning constraints message as specified by SETU.

            See message specification
            https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_4ccb3cb0-cc4b-422f-b506-3a09ff9cd1bb
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningConstraints_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningConstraints_v1.0'
    put:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: >-
        Update an existing planning constraints object as a whole. The request
        body replaces all previous shared information of the planning constraint
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          Planning constraint message as specified by SETU.

          See message specification
          https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_4ccb3cb0-cc4b-422f-b506-3a09ff9cd1bb
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlanningConstraints_v1.0'
          application/xml:
            schema:
              $ref: '#/components/schemas/PlanningConstraints_v1.0'
      responses:
        '200':
          description: >-
            200 OK | The updated planning constraints object (as submitted in
            the request body)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanningConstraints_v1.0'
            application/xml:
              schema:
                $ref: '#/components/schemas/PlanningConstraints_v1.0'
    delete:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Remove an existing planning constraints object
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
      responses:
        '204':
          description: The planning constraints object is succesfully removed
  /planning/constraints/{id}/periodic-lines:
    post:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: >-
        Add a new periodic availability line to an existing planning constraints
        object
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          A periodic availability line. This is a subset of the Planning
          constraints message specification.

          See message specification
          https://setu.semantic-treehouse.nl/#/Message_32_model/MessageModel_4ccb3cb0-cc4b-422f-b506-3a09ff9cd1bb
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-constraints-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-constraints-line'
      responses:
        '201':
          description: The added availability line
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
            application/xml:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
  /planning/constraints/{id}/single-lines:
    post:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: >-
        Add a new single availability line to an existing planning constraints
        object
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: >
          A single availability line. This is a subset of the Planning
          constraints message specification.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-constraints-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-constraints-line'
      responses:
        '201':
          description: The added availability line
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
            application/xml:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
  /planning/constraints/{id}/lines/{lineId}:
    get:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Get information about an existing availability line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: lineId
          description: The identifier of the availability line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      responses:
        '200':
          description: The existing availability line
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
            application/xml:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
    put:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Update an existing availability line
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: lineId
          description: The identifier of the availability line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
        - $ref: '#/components/parameters/VersionId'
        - in: header
          name: Content-Type
          required: true
          schema:
            type: string
            example: application/json
            enum:
              - application/json
              - application/xml
      requestBody:
        description: A availability line (periodic or single)
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/planning-constraints-line'
          application/xml:
            schema:
              $ref: '#/components/schemas/planning-constraints-line'
      responses:
        '200':
          description: The availability line (periodic or single)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
            application/xml:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
    delete:
      tags:
        - Planning constraints
        - Scenario 1 | Planning software APIs
        - Scenario 2 | Planning software APIs
      summary: Remove an availability line from
      parameters:
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: lineId
          description: The identifier of the availability line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      responses:
        '200':
          description: The availability line is succesfully removed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
            application/xml:
              schema:
                $ref: '#/components/schemas/planning-constraints-line'
components:
  headers:
    Location:
      description: >-
        This is the resource identifier assigned by the API server to the
        created resource.
      schema:
        type: string
        example: /planning/request/c93efb20-1acd-447b-87e7-fadb108d8a0e
  parameters:
    VersionId:
      in: header
      name: setuVersionId
      required: true
      schema:
        type: string
        example: '2.0'
      description: Specification of the SETU standard version that is used as body message.
    ContentType:
      in: header
      name: Content-Type
      required: true
      schema:
        type: string
        example: application/json
        enum:
          - application/json
          - application/xml
  schemas:
    planning-request:
      $ref: '#/components/schemas/PlanningRequest_v1.0'
      xml:
        name: PlanningRequest
    planning-request-line:
      oneOf:
        - $ref: '#/components/schemas/RequestedPeriodicPlanningLine'
        - $ref: '#/components/schemas/RequestedSinglePlanningLine'
    planning-assignment:
      $ref: '#/components/schemas/PlanningAssignment_v1.0'
      xml:
        name: PlanningAssignment
    planning-assignment-line:
      oneOf:
        - $ref: '#/components/schemas/AssignedPeriodicPlanningLine'
        - $ref: '#/components/schemas/AssignedSinglePlanningLine'
    planning-constraints:
      $ref: '#/components/schemas/PlanningConstraints_v1.0'
      xml:
        name: HumanResourceAvailability
    planning-constraints-line:
      type: object
      oneOf:
        - $ref: '#/components/schemas/PeriodicAvailabilityLine'
        - $ref: '#/components/schemas/SingleAvailabilityLine'
    planning-periodic-line:
      type: object
      xml:
        name: periodicPlanningLine
    planning-single-line:
      type: object
      xml:
        name: singlePlanningLine
    planning-periodic-availability-line:
      type: object
      xml:
        name: periodicAvailabilityLine
    planning-single-availability-line:
      type: object
      xml:
        name: singleAvailabilityLine
    error-object:
      type: object
      properties:
        code:
          type: string
        description:
          type: string
    PlanningRequest_v1.0:
      $id: https://ontology.setu.nl/planning#PlanningRequest
      $schema: https://json-schema.org/draft/2020-12/schema
      title: PlanningRequest_v1.0.yml
      description: Defines the JSON Schema in YAML for the PlanningRequest message.
      required:
        - documentId
        - customer
        - positionProfile
      additionalProperties: false
      properties:
        documentId:
          required:
            - value
            - schemeAgencyId
          additionalProperties: false
          properties:
            value:
              type: string
            schemeAgencyId:
              type: string
              const: Customer
          type: object
        actionCode:
          enum:
            - DELETE
            - GET
            - POST
            - PUT
          type: string
        supplier:
          additionalProperties: false
          properties:
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              type: array
            legalId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - KvK
                    - OIN
                    - RSIN
                  type: string
              type: object
            taxId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
                  const: BTW
              type: object
          type: object
        customer:
          additionalProperties: false
          properties:
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              type: array
            legalId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - KvK
                    - OIN
                    - RSIN
                  type: string
              type: object
            taxId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
                  const: BTW
              type: object
          type: object
        positionProfile:
          required:
            - positionLocation
          additionalProperties: false
          properties:
            positionId:
              required:
                - value
              additionalProperties: false
              properties:
                value:
                  type: string
              type: object
            positionTitle:
              type: string
            positionTask:
              additionalProperties: false
              properties:
                id:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                description:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
              type: object
            standByIndicator:
              type: boolean
            positionLocation:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  required:
                    - name
                  additionalProperties: false
                  properties:
                    id:
                      items:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            enum:
                              - Customer
                              - Supplier
                            type: string
                        type: object
                      maxItems: 2
                      type: array
                    line:
                      type: string
                    countryCode:
                      required:
                        - value
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                      type: object
                    city:
                      type: string
                    postalCode:
                      type: string
                    name:
                      type: string
                  type: object
              type: object
            requestedWorker:
              items:
                required:
                  - workerId
                additionalProperties: false
                properties:
                  workerId:
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        enum:
                          - Customer
                          - Supplier
                        type: string
                    type: object
                  person:
                    required:
                      - name
                    additionalProperties: false
                    properties:
                      name:
                        required:
                          - formattedName
                        additionalProperties: false
                        properties:
                          formattedName:
                            type: string
                        type: object
                    type: object
                type: object
              type: array
            positionOrganizations:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  items:
                    additionalProperties: false
                    properties:
                      taxId:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            type: string
                            const: BTW
                        type: object
                      legalId:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            enum:
                              - KvK
                              - OIN
                              - RSIN
                            type: string
                        type: object
                      responsibilityCode:
                        required:
                          - value
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                        type: object
                      id:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            enum:
                              - Customer
                              - Supplier
                            type: string
                        type: object
                      name:
                        type: string
                    type: object
                  minItems: 1
                  type: array
              type: object
            positionQualifications:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  additionalProperties: false
                  properties:
                    positionCompetencies:
                      required:
                        - item
                      additionalProperties: false
                      properties:
                        item:
                          items:
                            additionalProperties: false
                            properties:
                              competencyIds:
                                required:
                                  - item
                                additionalProperties: false
                                properties:
                                  item:
                                    items:
                                      required:
                                        - value
                                        - schemeAgencyId
                                      additionalProperties: false
                                      properties:
                                        value:
                                          type: string
                                        schemeAgencyId:
                                          enum:
                                            - Customer
                                            - Supplier
                                            - '[Any other value]'
                                          type: string
                                      type: object
                                    minItems: 1
                                    type: array
                                type: object
                              competencyName:
                                type: string
                            type: object
                          minItems: 1
                          type: array
                      type: object
                    licenses:
                      items:
                        required:
                          - name
                        additionalProperties: false
                        properties:
                          name:
                            type: string
                          issuingAuthority:
                            required:
                              - name
                            additionalProperties: false
                            properties:
                              name:
                                type: string
                            type: object
                        type: object
                      type: array
                  type: object
              type: object
            positionPeriod:
              required:
                - start
              additionalProperties: false
              properties:
                start:
                  type: string
                  format: date
                end:
                  type: string
                  format: date
              type: object
            workingPeriods:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  items:
                    required:
                      - workDuration
                      - baseDuration
                    additionalProperties: false
                    properties:
                      workDuration:
                        required:
                          - value
                          - unitCode
                        additionalProperties: false
                        properties:
                          value:
                            type: number
                          unitCode:
                            required:
                              - value
                            additionalProperties: false
                            properties:
                              value:
                                enum:
                                  - Days
                                  - Hours
                                type: string
                            type: object
                        type: object
                      baseDuration:
                        required:
                          - value
                          - unitCode
                        additionalProperties: false
                        properties:
                          value:
                            type: number
                          unitCode:
                            required:
                              - value
                            additionalProperties: false
                            properties:
                              value:
                                enum:
                                  - Daily
                                  - FourWeekly
                                  - Monthly
                                  - Quarterly
                                  - Weekly
                                  - Yearly
                                type: string
                            type: object
                        type: object
                    type: object
                  minItems: 1
                  type: array
              type: object
            shiftDescription:
              type: string
            costAllocationRef:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  additionalProperties: false
                  properties:
                    costCenter:
                      additionalProperties: false
                      properties:
                        name:
                          type: string
                        code:
                          type: string
                      type: object
                    project:
                      additionalProperties: false
                      properties:
                        code:
                          type: string
                      type: object
                  type: object
              type: object
          type: object
        requestComments:
          items:
            type: string
          type: array
        periodicPlanningLine:
          items:
            required:
              - lineId
              - planningPeriod
              - positionQuantity
            additionalProperties: false
            properties:
              lineId:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              actionCode:
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
                type: string
              planningLineName:
                type: string
              planningPeriod:
                enum:
                  - Friday
                  - Monday
                  - Saturday
                  - Sunday
                  - Thursday
                  - Tuesday
                  - Wednesday
                type: string
              startTime:
                type: string
                format: time
              endTime:
                type: string
                format: time
              hours:
                type: number
              breaks:
                items:
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      enum:
                        - Paid
                        - Unpaid
                      type: string
                    startTime:
                      type: string
                      format: time
                    endTime:
                      type: string
                      format: time
                    breakTrigger:
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
                      type: object
                  type: object
                type: array
              positionQuantity:
                type: integer
            type: object
          type: array
        singlePlanningLine:
          items:
            required:
              - lineId
              - singlePlanningType
              - positionQuantity
            additionalProperties: false
            properties:
              lineId:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              actionCode:
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
                type: string
              planningLineName:
                type: string
              singlePlanningType:
                enum:
                  - Exception
                  - Occasional
                type: string
              periodicPlanningLineReference:
                required:
                  - lineId
                additionalProperties: false
                properties:
                  lineId:
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        enum:
                          - Customer
                          - Supplier
                        type: string
                    type: object
                type: object
              startDateTime:
                type: string
                format: date-time
              endDateTime:
                type: string
                format: date-time
              hours:
                type: number
              breaks:
                items:
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      enum:
                        - Paid
                        - Unpaid
                      type: string
                    startDateTime:
                      type: string
                      format: date-time
                    endDateTime:
                      type: string
                      format: date-time
                    breakTrigger:
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
                      type: object
                  type: object
                type: array
              positionQuantity:
                type: integer
            type: object
          type: array
      type: object
    RequestedPeriodicPlanningLine:
      $id: https://ontology.setu.nl/planning#RequestedPeriodicPlanningLine
      $schema: https://json-schema.org/draft/2020-12/schema
      description: Defines the JSON Schema in YAML for the PeriodicRequestLine
      type: object
      properties:
        periodicPlanningLine:
          type: array
          items:
            type: object
            required:
              - lineId
              - planningPeriod
              - positionQuantity
            additionalProperties: false
            properties:
              lineId:
                type: object
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    type: string
                    enum:
                      - Customer
                      - Supplier
              actionCode:
                type: string
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
              planningLineName:
                type: string
              planningPeriod:
                type: string
                enum:
                  - Friday
                  - Monday
                  - Saturday
                  - Sunday
                  - Thursday
                  - Tuesday
                  - Wednesday
              startTime:
                type: string
                format: time
              endTime:
                type: string
                format: time
              hours:
                type: number
              breaks:
                type: array
                items:
                  type: object
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      type: string
                      enum:
                        - Paid
                        - Unpaid
                    startTime:
                      type: string
                      format: time
                    endTime:
                      type: string
                      format: time
                    breakTrigger:
                      type: object
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
              positionQuantity:
                type: integer
    RequestedSinglePlanningLine:
      $id: https://ontology.setu.nl/planning#RequestedSinglePlanningLine
      $schema: https://json-schema.org/draft/2020-12/schema
      description: Defines the JSON Schema in YAML for the SinglePlanningLine
      type: object
      properties:
        singlePlanningLine:
          type: array
          items:
            type: object
            required:
              - lineId
              - singlePlanningType
              - positionQuantity
            additionalProperties: false
            properties:
              lineId:
                type: object
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    type: string
                    enum:
                      - Customer
                      - Supplier
              actionCode:
                type: string
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
              planningLineName:
                type: string
              singlePlanningType:
                type: string
                enum:
                  - Exception
                  - Occasional
              periodicPlanningLineReference:
                type: object
                required:
                  - lineId
                additionalProperties: false
                properties:
                  lineId:
                    type: object
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        type: string
                        enum:
                          - Customer
                          - Supplier
              startDateTime:
                type: string
                format: date-time
              endDateTime:
                type: string
                format: date-time
              hours:
                type: number
              breaks:
                type: array
                items:
                  type: object
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      type: string
                      enum:
                        - Paid
                        - Unpaid
                    startDateTime:
                      type: string
                      format: date-time
                    endDateTime:
                      type: string
                      format: date-time
                    breakTrigger:
                      type: object
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
              positionQuantity:
                type: integer
    PlanningAssignment_v1.0:
      id: https://ontology.setu.nl/planning#PlanningAssignment
      $schema: https://json-schema.org/draft/2020-12/schema
      title: PlanningAssignment_v1.0.yml
      description: Defines the JSON Schema in YAML for the PlanningRequest message.
      required:
        - documentId
        - customer
        - assignedWorker
        - positionProfile
      additionalProperties: false
      properties:
        documentId:
          required:
            - value
            - schemeAgencyId
          additionalProperties: false
          properties:
            value:
              type: string
            schemeAgencyId:
              enum:
                - Customer
                - Supplier
              type: string
          type: object
        actionCode:
          enum:
            - DELETE
            - GET
            - POST
            - PUT
          type: string
        supplier:
          additionalProperties: false
          properties:
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              type: array
            legalId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - KvK
                    - OIN
                    - RSIN
                  type: string
              type: object
            taxId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
                  const: BTW
              type: object
          type: object
        customer:
          additionalProperties: false
          properties:
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              type: array
            legalId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - KvK
                    - OIN
                    - RSIN
                  type: string
              type: object
            taxId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
                  const: BTW
              type: object
          type: object
        planningRequestReference:
          required:
            - documentId
          additionalProperties: false
          properties:
            documentId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
                  const: Customer
              type: object
          type: object
        assignedWorker:
          required:
            - assignedStatus
          additionalProperties: false
          properties:
            assignedStatus:
              type: boolean
            workerId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - Customer
                    - Supplier
                  type: string
              type: object
            person:
              required:
                - name
              additionalProperties: false
              properties:
                name:
                  required:
                    - formattedName
                  additionalProperties: false
                  properties:
                    formattedName:
                      type: string
                  type: object
              type: object
            workAssignments:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  required:
                    - id
                  additionalProperties: false
                  properties:
                    id:
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          type: string
                          const: Supplier
                      type: object
                  type: object
              type: object
          type: object
        positionProfile:
          required:
            - positionLocation
          additionalProperties: false
          properties:
            positionId:
              required:
                - value
              additionalProperties: false
              properties:
                value:
                  type: string
              type: object
            positionTitle:
              type: string
            positionTask:
              additionalProperties: false
              properties:
                id:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                description:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
              type: object
            standByIndicator:
              type: boolean
            positionLocation:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  required:
                    - name
                  additionalProperties: false
                  properties:
                    id:
                      items:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            enum:
                              - Customer
                              - Supplier
                            type: string
                        type: object
                      maxItems: 2
                      type: array
                    line:
                      type: string
                    countryCode:
                      required:
                        - value
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                      type: object
                    city:
                      type: string
                    postalCode:
                      type: string
                    name:
                      type: string
                  type: object
              type: object
            positionOrganizations:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  items:
                    additionalProperties: false
                    properties:
                      taxId:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            type: string
                            const: BTW
                        type: object
                      legalId:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            enum:
                              - KvK
                              - OIN
                              - RSIN
                            type: string
                        type: object
                      responsibilityCode:
                        required:
                          - value
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                        type: object
                      id:
                        required:
                          - value
                          - schemeAgencyId
                        additionalProperties: false
                        properties:
                          value:
                            type: string
                          schemeAgencyId:
                            enum:
                              - Customer
                              - Supplier
                            type: string
                        type: object
                      name:
                        type: string
                    type: object
                  minItems: 1
                  type: array
              type: object
            positionPeriod:
              required:
                - start
              additionalProperties: false
              properties:
                start:
                  type: string
                  format: date
                end:
                  type: string
                  format: date
              type: object
            workingPeriods:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  items:
                    required:
                      - workDuration
                      - baseDuration
                    additionalProperties: false
                    properties:
                      workDuration:
                        required:
                          - value
                          - unitCode
                        additionalProperties: false
                        properties:
                          value:
                            type: number
                          unitCode:
                            required:
                              - value
                            additionalProperties: false
                            properties:
                              value:
                                enum:
                                  - Days
                                  - Hours
                                type: string
                            type: object
                        type: object
                      baseDuration:
                        required:
                          - value
                          - unitCode
                        additionalProperties: false
                        properties:
                          value:
                            type: number
                          unitCode:
                            required:
                              - value
                            additionalProperties: false
                            properties:
                              value:
                                enum:
                                  - Daily
                                  - FourWeekly
                                  - Monthly
                                  - Quarterly
                                  - Weekly
                                  - Yearly
                                type: string
                            type: object
                        type: object
                    type: object
                  minItems: 1
                  type: array
              type: object
            shiftDescription:
              type: string
            travelDistance:
              type: number
            costAllocationRef:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  additionalProperties: false
                  properties:
                    costCenter:
                      additionalProperties: false
                      properties:
                        name:
                          type: string
                        code:
                          type: string
                      type: object
                    project:
                      additionalProperties: false
                      properties:
                        code:
                          type: string
                      type: object
                  type: object
              type: object
          type: object
        periodicPlanningLine:
          items:
            required:
              - lineId
              - planningPeriod
            additionalProperties: false
            properties:
              lineId:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              actionCode:
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
                type: string
              planningLineName:
                type: string
              planningPeriod:
                enum:
                  - Friday
                  - Monday
                  - Saturday
                  - Sunday
                  - Thursday
                  - Tuesday
                  - Wednesday
                type: string
              startTime:
                type: string
                format: time
              endTime:
                type: string
                format: time
              hours:
                type: number
              breaks:
                items:
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      enum:
                        - Paid
                        - Unpaid
                      type: string
                    startTime:
                      type: string
                      format: time
                    endTime:
                      type: string
                      format: time
                    breakTrigger:
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
                      type: object
                  type: object
                type: array
              relatedWorker:
                items:
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          enum:
                            - Customer
                            - Supplier
                          type: string
                      type: object
                    relatedWorkerType:
                      enum:
                        - Preferred
                        - Required
                      type: string
                  type: object
                type: array
            type: object
          type: array
        singlePlanningLine:
          items:
            required:
              - lineId
              - singlePlanningType
            additionalProperties: false
            properties:
              lineId:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              actionCode:
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
                type: string
              planningLineName:
                type: string
              singlePlanningType:
                enum:
                  - Exception
                  - Occasional
                type: string
              periodicPlanningLineReference:
                required:
                  - lineId
                additionalProperties: false
                properties:
                  lineId:
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        enum:
                          - Customer
                          - Supplier
                        type: string
                    type: object
                type: object
              startDateTime:
                type: string
                format: date-time
              endDateTime:
                type: string
                format: date-time
              hours:
                type: number
              breaks:
                items:
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      enum:
                        - Paid
                        - Unpaid
                      type: string
                    startDateTime:
                      type: string
                      format: date-time
                    endDateTime:
                      type: string
                      format: date-time
                    breakTrigger:
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
                      type: object
                  type: object
                type: array
              relatedWorker:
                items:
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          enum:
                            - Customer
                            - Supplier
                          type: string
                      type: object
                    relatedWorkerType:
                      enum:
                        - Preferred
                        - Required
                      type: string
                  type: object
                type: array
            type: object
          type: array
      type: object
    AssignedPeriodicPlanningLine:
      $id: https://ontology.setu.nl/planning#AssignedPeriodicPlanningLine
      $schema: https://json-schema.org/draft/2020-12/schema
      description: Defines the JSON Schema in YAML for the AssignedPeriodicPlanningLine.
      type: object
      properties:
        periodicPlanningLine:
          type: array
          items:
            type: object
            required:
              - lineId
              - planningPeriod
            additionalProperties: false
            properties:
              lineId:
                type: object
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    type: string
                    enum:
                      - Customer
                      - Supplier
              actionCode:
                type: string
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
              planningLineName:
                type: string
              planningPeriod:
                type: string
                enum:
                  - Friday
                  - Monday
                  - Saturday
                  - Sunday
                  - Thursday
                  - Tuesday
                  - Wednesday
              startTime:
                type: string
                format: time
              endTime:
                type: string
                format: time
              hours:
                type: number
              breaks:
                type: array
                items:
                  type: object
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      type: string
                      enum:
                        - Paid
                        - Unpaid
                    startTime:
                      type: string
                      format: time
                    endTime:
                      type: string
                      format: time
                    breakTrigger:
                      type: object
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
              relatedWorker:
                type: array
                items:
                  type: object
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      type: object
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          type: string
                          enum:
                            - Customer
                            - Supplier
                    relatedWorkerType:
                      type: string
                      enum:
                        - Preferred
                        - Required
    AssignedSinglePlanningLine:
      $id: https://ontology.setu.nl/planning#AssignedSinglePlanningLine
      $schema: https://json-schema.org/draft/2020-12/schema
      description: Defines the JSON Schema in YAML for the AssignedSinglePlanningLine.
      type: object
      properties:
        singlePlanningLine:
          type: array
          items:
            type: object
            required:
              - lineId
              - singlePlanningType
              - positionQuantity
            additionalProperties: false
            properties:
              lineId:
                type: object
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    type: string
                    enum:
                      - Customer
                      - Supplier
              actionCode:
                type: string
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
              planningLineName:
                type: string
              singlePlanningType:
                type: string
                enum:
                  - Exception
                  - Occasional
              periodicPlanningLineReference:
                type: object
                required:
                  - lineId
                additionalProperties: false
                properties:
                  lineId:
                    type: object
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        type: string
                        enum:
                          - Customer
                          - Supplier
              startDateTime:
                type: string
                format: date-time
              endDateTime:
                type: string
                format: date-time
              hours:
                type: number
              breaks:
                type: array
                items:
                  type: object
                  required:
                    - paidOrUnpaid
                  additionalProperties: false
                  properties:
                    paidOrUnpaid:
                      type: string
                      enum:
                        - Paid
                        - Unpaid
                    startDateTime:
                      type: string
                      format: date-time
                    endDateTime:
                      type: string
                      format: date-time
                    breakTrigger:
                      type: object
                      required:
                        - hours
                        - breakDuration
                      additionalProperties: false
                      properties:
                        hours:
                          type: number
                        breakDuration:
                          type: string
                          format: time
              relatedWorker:
                type: array
                items:
                  type: object
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      type: object
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          type: string
                          enum:
                            - Customer
                            - Supplier
                    relatedWorkerType:
                      type: string
                      enum:
                        - Preferred
                        - Required
    PlanningConstraints_v1.0:
      $id: https://ontology.setu.nl/planning#PlanningConstraints
      $schema: https://json-schema.org/draft/2020-12/schema
      title: PlanningConstraints_v1.0.yml
      description: Defines the JSON Schema in YAML for the PlanningConstraints message.
      required:
        - documentId
        - supplier
        - customer
        - worker
      additionalProperties: false
      properties:
        documentId:
          required:
            - value
            - schemeAgencyId
          additionalProperties: false
          properties:
            value:
              type: string
            schemeAgencyId:
              type: string
              const: Supplier
          type: object
        actionCode:
          enum:
            - DELETE
            - GET
            - POST
            - PUT
          type: string
        supplier:
          additionalProperties: false
          properties:
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              type: array
            legalId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - KvK
                    - OIN
                    - RSIN
                  type: string
              type: object
            taxId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
                  const: BTW
              type: object
          type: object
        customer:
          additionalProperties: false
          properties:
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              type: array
            legalId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - KvK
                    - OIN
                    - RSIN
                  type: string
              type: object
            taxId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
                  const: BTW
              type: object
          type: object
        worker:
          required:
            - workerId
          additionalProperties: false
          properties:
            workerId:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              minItems: 1
              type: array
            workAssignments:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  required:
                    - id
                  additionalProperties: false
                  properties:
                    id:
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          type: string
                          const: Supplier
                      type: object
                  type: object
              type: object
          type: object
        positionProfile:
          additionalProperties: false
          properties:
            positionPeriod:
              required:
                - start
              additionalProperties: false
              properties:
                start:
                  type: string
                  format: date
                end:
                  type: string
                  format: date
              type: object
            workingPeriods:
              required:
                - item
              additionalProperties: false
              properties:
                item:
                  items:
                    required:
                      - workDuration
                      - baseDuration
                    additionalProperties: false
                    properties:
                      workDuration:
                        required:
                          - value
                          - unitCode
                        additionalProperties: false
                        properties:
                          value:
                            type: number
                          unitCode:
                            required:
                              - value
                            additionalProperties: false
                            properties:
                              value:
                                enum:
                                  - Days
                                  - Hours
                                type: string
                            type: object
                        type: object
                      baseDuration:
                        required:
                          - value
                          - unitCode
                        additionalProperties: false
                        properties:
                          value:
                            type: number
                          unitCode:
                            required:
                              - value
                            additionalProperties: false
                            properties:
                              value:
                                enum:
                                  - Daily
                                  - FourWeekly
                                  - Monthly
                                  - Quarterly
                                  - Weekly
                                  - Yearly
                                type: string
                            type: object
                        type: object
                    type: object
                  minItems: 1
                  type: array
              type: object
          type: object
        periodicAvailabilityLine:
          items:
            required:
              - lineId
              - availabilityStatus
              - availabilityPeriod
            additionalProperties: false
            properties:
              lineId:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              actionCode:
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
                type: string
              availabilityStatus:
                enum:
                  - Available
                  - NotAvailable
                  - RatherNot
                type: string
              availabilityPeriod:
                enum:
                  - Daily
                  - FourWeekly
                  - Friday
                  - Monday
                  - Monthly
                  - Saturday
                  - Sunday
                  - Thursday
                  - Tuesday
                  - Wednesday
                  - Weekly
                type: string
              startTime:
                type: string
                format: time
              endTime:
                type: string
                format: time
              hours:
                type: number
              relatedWorker:
                items:
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          enum:
                            - Customer
                            - Supplier
                          type: string
                      type: object
                    relatedWorkerType:
                      enum:
                        - Preferred
                        - Required
                      type: string
                    startDateTime:
                      type: string
                      format: date-time
                    endDateTime:
                      type: string
                      format: date-time
                  type: object
                type: array
              availabilityComment:
                type: string
            type: object
          type: array
        singleAvailabilityLine:
          items:
            required:
              - lineId
              - singleAvailabilityType
              - availabilityStatus
              - startDateTime
              - endDateTime
            additionalProperties: false
            properties:
              lineId:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              actionCode:
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
                type: string
              singleAvailabilityType:
                enum:
                  - Exception
                  - Occasional
                type: string
              periodicAvailabilityLineReference:
                required:
                  - lineId
                additionalProperties: false
                properties:
                  lineId:
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        enum:
                          - Customer
                          - Supplier
                        type: string
                    type: object
                type: object
              availabilityStatus:
                enum:
                  - Available
                  - NotAvailable
                  - RatherNot
                type: string
              startDateTime:
                type: string
                format: date-time
              endDateTime:
                type: string
                format: date-time
              hours:
                type: number
              relatedWorker:
                items:
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          enum:
                            - Customer
                            - Supplier
                          type: string
                      type: object
                    relatedWorkerType:
                      enum:
                        - Preferred
                        - Required
                      type: string
                  type: object
                type: array
              availabilityComment:
                type: string
            type: object
          type: array
        maximumTravelDistance:
          type: number
      type: object
    PeriodicAvailabilityLine:
      $id: https://ontology.setu.nl/planning#PeriodicAvailbilityLine
      $schema: https://json-schema.org/draft/2020-12/schema
      description: Defines the JSON Schema in YAML for the PeriodicAvailablityLine
      type: object
      properties:
        periodicAvailabilityLine:
          type: array
          items:
            type: object
            required:
              - lineId
              - availabilityStatus
              - availabilityPeriod
            additionalProperties: false
            properties:
              lineId:
                type: object
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    type: string
                    enum:
                      - Customer
                      - Supplier
              actionCode:
                type: string
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
              availabilityStatus:
                type: string
                enum:
                  - Available
                  - NotAvailable
                  - RatherNot
              availabilityPeriod:
                type: string
                enum:
                  - Daily
                  - FourWeekly
                  - Friday
                  - Monday
                  - Monthly
                  - Saturday
                  - Sunday
                  - Thursday
                  - Tuesday
                  - Wednesday
                  - Weekly
              startTime:
                type: string
                format: time
              endTime:
                type: string
                format: time
              hours:
                type: number
              relatedWorker:
                type: array
                items:
                  type: object
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      type: object
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          type: string
                          enum:
                            - Customer
                            - Supplier
                    relatedWorkerType:
                      type: string
                      enum:
                        - Preferred
                        - Required
                    startDateTime:
                      type: string
                      format: date-time
                    endDateTime:
                      type: string
                      format: date-time
              availabilityComment:
                type: string
    SingleAvailabilityLine:
      $id: https://ontology.setu.nl/planning#SingleAvailabilityLine
      $schema: https://json-schema.org/draft/2020-12/schema
      description: Defines the JSON Schema in YAML for the SingleAvailabilityLine.
      type: object
      properties:
        singleAvailabilityLine:
          type: array
          items:
            type: object
            required:
              - lineId
              - singleAvailabilityType
              - availabilityStatus
              - startDateTime
              - endDateTime
            additionalProperties: false
            properties:
              lineId:
                type: object
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    type: string
                    enum:
                      - Customer
                      - Supplier
              actionCode:
                type: string
                enum:
                  - DELETE
                  - GET
                  - POST
                  - PUT
              singleAvailabilityType:
                type: string
                enum:
                  - Exception
                  - Occasional
              periodicAvailabilityLineReference:
                type: object
                required:
                  - lineId
                additionalProperties: false
                properties:
                  lineId:
                    type: object
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        type: string
                        enum:
                          - Customer
                          - Supplier
              availabilityStatus:
                type: string
                enum:
                  - Available
                  - NotAvailable
                  - RatherNot
              startDateTime:
                type: string
                format: date-time
              endDateTime:
                type: string
                format: date-time
              hours:
                type: number
              relatedWorker:
                type: array
                items:
                  type: object
                  required:
                    - workerId
                    - relatedWorkerType
                  additionalProperties: false
                  properties:
                    workerId:
                      type: object
                      required:
                        - value
                        - schemeAgencyId
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                        schemeAgencyId:
                          type: string
                          enum:
                            - Customer
                            - Supplier
                    relatedWorkerType:
                      type: string
                      enum:
                        - Preferred
                        - Required
              availabilityComment:
                type: string
  responses:
    '201':
      description: Created. Successful request, resource is created. (synchronous)
    '202':
      description: >-
        Accepted. Successful request, resource is not (yet) created. This
        response code is not supported by the SETU (asynchronous)
    '204':
      description: No Content. Response for a successful DELETE operation.
    '400':
      description: >-
        400 Bad request | The reuest is invalid. E.g. due to syntax error or
        invalid response body
      content:
        application/xml:
          schema:
            $ref: '#/components/schemas/error-object'
    '401':
      description: >-
        401 Unauthorized | The request lacks valid authentication credentials
        for the resource
      content:
        application/xml:
          schema:
            $ref: '#/components/schemas/error-object'
    '403':
      description: >-
        403 Forbidden | The request was valid, but the server is refusing
        action. The client may not be authorized for the resource
      content:
        application/xml:
          schema:
            $ref: '#/components/schemas/error-object'
    '404':
      description: 404 Not found
      content:
        application/xml:
          schema:
            $ref: '#/components/schemas/error-object'
    '500':
      description: 500 Internal server error
      content:
        application/xml:
          schema:
            $ref: '#/components/schemas/error-object'
