openapi: 3.0.2
info:
  title: SETU API for Purchase to Pay
  description: >
    Set of API specifications that allows for the exchange of information
    related to purchase-to-pay processes.

    The JSON and XML schemas for the requestBody of each API call can be found
    on the SETU GitHub.
  license:
    name: MIT
  version: '1.0'
externalDocs:
  description: More about SETU
  url: https://www.setu.nl
tags:
  - name: Staffing Order (RFQ)
    description: >-
      Staffing Order is used by a staffing customer to request (an) employee(s)
      for an open position.
  - name: Human Resource
    description: >-
      Human Resource is used by the staffing supplier to match a human resource
      to an open position.
  - name: Staffing Order (Order)
    description: >-
      Staffing Order is used by a staffing customer to order (an) employee(s)
      for an open position.
  - name: Assignment
    description: The Assignment is used to confirm the placement.
  - name: Timecard
    description: >-
      The SETU Standard for Reporting Time and Expenses is targeted at the
      process of reporting time & expenses in the staffing industry.

      - **Note** This API endpoint includes REST calls about time-internvals and
      allowances. These consist of line identifiers, which are also used as part
      of certain REST api paths. They are combined with the resource identifiers
      as specified on the SETU documentation page. For example, `PUT
      /purchase-to-pay/timecard/c93efb20-1acd-447b-87e7-fadb108d8a0e/time-interval/2`
      can be used to update or get the information about a time-interval
      planningline with line ID `2` within a created timecard known by its
      resource identifier (UUID) as `'c93efb20-1acd-447b-87e7-fadb108d8a0e'`.
  - name: Invoice
    description: >-
      The SETU Standard for Invoicing is targeted at the process of invoicing in
      the staffing industry. It deals with electronically sending invoicing
      information, including corrections. The standard supports the exchange of
      invoicing information between two organizations; this implies that
      multi-party collaborations are out of scope.
  - name: Staffing supplier's backoffice APIs
    description: Set of APIs to be implemented by the staffing supplier
  - name: Staffing customer's backoffice APIs
    description: Set of APIs to be implemented by the staffing customer
  - name: Attachment
    description: >-
      API endpoint for attachments. As a responds an URL of the resource
      location should be provided, where this URL can be used in the SETU
      messages for future access.
paths:
  /purchase-to-pay/staffing-order/request-for-quotation/{id}:
    post:
      tags:
        - Staffing Order (RFQ)
        - Staffing supplier's backoffice APIs
      summary: Submit a new staffing order (RFQ)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        description: >
          Complete staffing order message as specified by SETU. A message may
          have multiple versions that can differ. This message contains the
          order type 'RFQ'.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
          application/xml:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
      responses:
        '201':
          description: >-
            Created | The created staffing order (as submitted in the request
            body)
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    get:
      tags:
        - Staffing Order (RFQ)
      summary: Retrieve information about an existing staffing order (RFQ)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK | Information about an existing staffing order (RFQ)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
            application/xml:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    put:
      tags:
        - Staffing Order (RFQ)
        - Staffing supplier's backoffice APIs
      summary: Update an existing staffing order (RFQ)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
          application/xml:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
      responses:
        '200':
          description: The updated staffing order (RFQ)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
            application/xml:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    delete:
      tags:
        - Staffing Order (RFQ)
        - Staffing supplier's backoffice APIs
      summary: Delete an existing staffing order (RFQ)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The staffing order is successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
            application/xml:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/human-resource/{id}:
    post:
      tags:
        - Human Resource
        - Staffing customer's backoffice APIs
      summary: Submit a new human resource
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        description: |
          Complete human resource message as specified by SETU.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HumanResource'
          application/xml:
            schema:
              $ref: '#/components/schemas/HumanResource'
      responses:
        '201':
          description: Created | The created human resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HumanResource'
            application/xml:
              schema:
                $ref: '#/components/schemas/HumanResource'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    get:
      tags:
        - Human Resource
      summary: Retrieve information about an existing human resource
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK  | Information about an existing human resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HumanResource'
            application/xml:
              schema:
                $ref: '#/components/schemas/HumanResource'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    put:
      tags:
        - Human Resource
        - Staffing customer's backoffice APIs
      summary: Update an existing human resource
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HumanResource'
          application/xml:
            schema:
              $ref: '#/components/schemas/HumanResource'
      responses:
        '200':
          description: The updated human resource
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    delete:
      tags:
        - Human Resource
        - Staffing customer's backoffice APIs
      summary: Delete an existing human resource
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The human resource message is successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HumanResource'
            application/xml:
              schema:
                $ref: '#/components/schemas/HumanResource'
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/staffing-order/order/{id}:
    post:
      tags:
        - Staffing Order (Order)
        - Staffing supplier's backoffice APIs
      summary: Submit a new staffing order (Order)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        description: >
          Complete staffing order message as specified by SETU. A message may
          have multiple versions that can differ. This message contains the
          order type 'Order'.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
          application/xml:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
      responses:
        '201':
          description: >-
            Created | The created staffing order (as submitted in the request
            body)
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    get:
      tags:
        - Staffing Order (Order)
      summary: Retrieve information about an existing staffing order (Order)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK | Information about an existing staffing order (Order)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
            application/xml:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    put:
      tags:
        - Staffing Order (Order)
        - Staffing supplier's backoffice APIs
      summary: Update an existing staffing order (Order)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
          application/xml:
            schema:
              $ref: '#/components/schemas/StaffingOrder'
      responses:
        '200':
          description: The updated staffing order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
            application/xml:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
    delete:
      tags:
        - Staffing Order (Order)
        - Staffing supplier's backoffice APIs
      summary: Delete an existing staffing order (Order)
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The staffing order (Order) is successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
            application/xml:
              schema:
                $ref: '#/components/schemas/StaffingOrder'
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/assignment/{id}:
    post:
      tags:
        - Assignment
        - Staffing customer's backoffice APIs
      summary: Submit a new assignment
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        description: |
          Complete assignment message as specified by SETU. 
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Assignment'
          application/xml:
            schema:
              $ref: '#/components/schemas/Assignment'
      responses:
        '201':
          description: Created | The created assignment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Assignment'
            application/xml:
              schema:
                $ref: '#/components/schemas/Assignment'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    get:
      tags:
        - Assignment
      summary: Retrieve information about an existing assignment
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK | Information about an existing assignment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Assignment'
            application/xml:
              schema:
                $ref: '#/components/schemas/Assignment'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    put:
      tags:
        - Assignment
        - Staffing customer's backoffice APIs
      summary: Update an existing assignment
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Assignment'
          application/xml:
            schema:
              $ref: '#/components/schemas/Assignment'
      responses:
        '200':
          description: The updated assignment
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    delete:
      tags:
        - Assignment
        - Staffing customer's backoffice APIs
      summary: Delete an existing assignment
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The assignment is successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Assignment'
            application/xml:
              schema:
                $ref: '#/components/schemas/Assignment'
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/timecard/{id}:
    post:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Submit a new timecard
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        description: |
          Complete timecard message as specified by SETU. 
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Timecard'
          application/xml:
            schema:
              $ref: '#/components/schemas/Timecard'
      responses:
        '201':
          description: Created | The timecard is created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Timecard'
            application/xml:
              schema:
                $ref: '#/components/schemas/Timecard'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    get:
      tags:
        - Timecard
      summary: Retrieve an existing timecard
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK | Information about an existing timecard
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Timecard'
            application/xml:
              schema:
                $ref: '#/components/schemas/Timecard'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    put:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Update an existing timecard
      description: >-
        **Usage Note**: The requirements for a PUT operation on a timecard
        (e.g., determining the deadline for when changes are allowed) are to be
        agreed upon bilaterally between the involved parties. This is not within
        the scope of SETU standards and must be handled separately by the
        parties involved. 
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Timecard'
          application/xml:
            schema:
              $ref: '#/components/schemas/Timecard'
      responses:
        '200':
          description: The updated timecard
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    delete:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Delete an existing timecard
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The timecard is successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Timecard'
            application/xml:
              schema:
                $ref: '#/components/schemas/Timecard'
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/timecard/{id}/time-interval/{intervalID}:
    post:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Submit a new time interval to an existing timecard
      parameters:
        - $ref: '#/components/parameters/VersionId'
        - in: path
          name: id
          description: The identifier of the timecard object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: intervalID
          description: The identifier of the time interval line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      requestBody:
        description: >
          The time interval in the timecard message as specified by SETU. For
          the actual JSON and XML Schema of allowance and time interval, please
          refer to the TimeCard Schema.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/time-interval'
          application/xml:
            schema:
              $ref: '#/components/schemas/time-interval'
      responses:
        '201':
          description: Created | The time interval is created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/time-interval'
            application/xml:
              schema:
                $ref: '#/components/schemas/time-interval'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    get:
      tags:
        - Timecard
      summary: Retrieve an existing time interval
      description: >-
        Line identifiers are also used as part of certain REST api paths. They
        are combined with the resource identifiers as specified on the SETU
        documentation page. For example, PUT
        /purchase-to-pay/timecard/c93efb20-1acd-447b-87e7-fadb108d8a0e/time-interval/2
        can be used to update or get the information about a time-interval
        planningline with line ID '2' within a created timecard known by its
        resource identifier (UUID) as 'c93efb20-1acd-447b-87e7-fadb108d8a0e'.
      parameters:
        - in: path
          name: id
          description: The identifier of the timecard object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: intervalID
          description: The identifier of the time interval line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      responses:
        '200':
          description: OK | Information about an existing time interval
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/time-interval'
            application/xml:
              schema:
                $ref: '#/components/schemas/time-interval'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    put:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Update an existing time interval
      parameters:
        - $ref: '#/components/parameters/VersionId'
        - in: path
          name: id
          description: The identifier of the timecard object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: intervalID
          description: The identifier of the time interval line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/time-interval'
          application/xml:
            schema:
              $ref: '#/components/schemas/time-interval'
      responses:
        '200':
          description: The updated time interval
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    delete:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Delete an existing time interval
      parameters:
        - in: path
          name: id
          description: The identifier of the timecard object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: intervalID
          description: The identifier of the time interval line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      responses:
        '200':
          description: The time interval is successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/time-interval'
            application/xml:
              schema:
                $ref: '#/components/schemas/time-interval'
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/timecard/{id}/allowance:
    post:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Submit a new allowance to an existing timecard
      parameters:
        - $ref: '#/components/parameters/VersionId'
        - in: path
          name: id
          description: The identifier of the planning constraints object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
      requestBody:
        description: >
          The allowance in the timecard message as specified by SETU. For the
          actual JSON and XML Schema of allowance and time interval, please
          refer to the TimeCard Schema.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/allowance'
          application/xml:
            schema:
              $ref: '#/components/schemas/allowance'
      responses:
        '201':
          description: Created | The allowance is created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/allowance'
            application/xml:
              schema:
                $ref: '#/components/schemas/allowance'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/timecard/{id}/allowance/{allowanceID}:
    get:
      tags:
        - Timecard
      summary: Retrieve an existing allowance
      parameters:
        - in: path
          name: id
          description: The identifier of the timecard object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: allowanceID
          description: The identifier of the allowance line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      responses:
        '200':
          description: OK | Information about an existing allowance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/allowance'
            application/xml:
              schema:
                $ref: '#/components/schemas/allowance'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    put:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Update an existing allowance
      parameters:
        - $ref: '#/components/parameters/VersionId'
        - in: path
          name: id
          description: The identifier of the timecard object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: allowanceID
          description: The identifier of the allowance line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/allowance'
          application/xml:
            schema:
              $ref: '#/components/schemas/allowance'
      responses:
        '200':
          description: The updated allowance
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    delete:
      tags:
        - Timecard
        - Staffing supplier's backoffice APIs
      summary: Delete an existing allowance
      parameters:
        - in: path
          name: id
          description: The identifier of the timecard object
          required: true
          schema:
            type: string
          example: e59c8cb9-ab3f-4455-8d63-8bdb2730c545
        - in: path
          name: allowanceID
          description: The identifier of the allowance line
          required: true
          schema:
            type: string
          example: acb88ec7-8d93-4bb8-98e1-f7db0074fdc6
      responses:
        '200':
          description: The allowance is successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/allowance'
            application/xml:
              schema:
                $ref: '#/components/schemas/allowance'
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /purchase-to-pay/invoice/{id}:
    post:
      tags:
        - Invoice
        - Staffing customer's backoffice APIs
      summary: Create a new invoice
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/VersionId'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        description: >
          Complete invoice message as specified by SETU. A message specification
          may have multiple versions that can differ. See the different versions
          of the message specifications here:
          https://setu.semantic-treehouse.nl/message-model/MessageModel_527939af-3e6c-436e-8a85-e749724a8742
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Invoice'
          application/xml:
            schema:
              $ref: '#/components/schemas/Invoice'
      responses:
        '201':
          description: Created | The created invoice
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    get:
      tags:
        - Invoice
      summary: Retrieve an existing invoice
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK | Information about an existing invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
            application/xml:
              schema:
                $ref: '#/components/schemas/Invoice'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
    delete:
      tags:
        - Invoice
        - Staffing customer's backoffice APIs
      summary: Delete an existing invoice
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The invoice is successfully deleted
        '204':
          description: No content | Response for a successful DELETE operation
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
  /attachment/{id}:
    post:
      tags:
        - Attachment
        - Staffing supplier's backoffice APIs
        - Staffing customer's backoffice APIs
      summary: Create an attachment for future access via an URL.
      description: >-
        This endpoint can be used to upload files as attachments and retrieve a
        unique URL for each uploaded file. The returned URL can be used in
        future messages or API requests to reference the attached file.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        description: Request body to upload an embedded attachment.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Attachment'
          application/xml:
            schema:
              $ref: '#/components/schemas/Attachment'
      responses:
        '200':
          description: OK.
          headers:
            Content-Location:
              description: >-
                The `Content-Location` header indicates the URL of the resource
                transmitted. This URL can be used by the client to bypass future
                content negotiation for this resource.
              schema:
                $ref: '#/components/schemas/Attachment-Response'
        '201':
          description: Created | The created Attachment
          headers:
            Content-Location:
              description: >-
                The `Content-Location` header indicates the URL of the resource
                transmitted. This URL can be used by the client to bypass future
                content negotiation for this resource.
              schema:
                $ref: '#/components/schemas/Attachment-Response'
        '400':
          description: Bad request | The request is invalid.
        '401':
          description: >-
            Uauthorized | The request lacks valid authentication credentials for
            the resource.
        '403':
          description: >-
            Forbidden | The request was valid, but the server is refusing
            action. The user might not be authorized for the resource.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
components:
  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
    MimeType:
      in: header
      name: Mime-Type
      required: true
      description: >-
        MIME type of the document being uploaded, e.g., 'application/pdf'.
        Please see the codelist of the MIME types codes over here:
        https://stpe.semantic-treehouse.nl/codelist/Codelist_1506927228_00216691
      schema:
        type: string
        example: application/pdf
        enum:
          - application/pdf
          - application/vnd.oasis.opendocument.spreadsheet
          - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
          - text/csv
          - image/png
          - image/jpeg
  schemas:
    StaffingOrder:
      $schema: https://json-schema.org/draft/2020-12/schema
      title: SETU StaffingOrder version 2.0
      description: YAML Schema Generated by Semantic Treehouse on 2024-11-01T16:12:22+01:00
      required:
        - documentId
        - customer
        - orderType
        - positionProfile
      additionalProperties: false
      properties:
        documentId:
          required:
            - value
            - schemeAgencyId
          additionalProperties: false
          properties:
            value:
              type: string
            schemeAgencyId:
              enum:
                - Customer
                - Supplier
              type: string
          type: object
        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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                      type: string
                  type: object
              type: object
          type: object
        customer:
          required:
            - personContacts
          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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                      type: string
                  type: object
              type: object
            personContacts:
              items:
                required:
                  - name
                additionalProperties: false
                properties:
                  name:
                    required:
                      - formattedName
                    additionalProperties: false
                    properties:
                      formattedName:
                        type: string
                    type: object
                  communication:
                    additionalProperties: false
                    properties:
                      phone:
                        items:
                          required:
                            - formattedNumber
                          additionalProperties: false
                          properties:
                            formattedNumber:
                              type: string
                          type: object
                        type: array
                      email:
                        items:
                          required:
                            - address
                          additionalProperties: false
                          properties:
                            address:
                              type: string
                            useCode:
                              enum:
                                - Business
                                - Private
                              type: string
                          type: object
                        type: array
                    type: object
                  roleCode:
                    type: string
                type: object
              minItems: 1
              type: array
          type: object
        orderType:
          enum:
            - Order
            - RFQ
          type: string
        positionProfile:
          required:
            - positionLocation
            - positionPeriod
            - workingPeriods
          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
            positionLocation:
              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
                name:
                  type: string
                countryCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                city:
                  type: string
                postalCode:
                  type: string
                streetName:
                  type: string
                houseNumber:
                  type: string
                houseNumberAddition:
                  type: string
                buildingAddition:
                  type: string
              type: object
            requestedWorker:
              additionalProperties: false
              properties:
                workerId:
                  items:
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        enum:
                          - Customer
                          - Supplier
                        type: string
                    type: object
                  maxItems: 2
                  type: array
                person:
                  additionalProperties: false
                  properties:
                    name:
                      required:
                        - formattedName
                      additionalProperties: false
                      properties:
                        formattedName:
                          type: string
                        legal:
                          type: string
                        given:
                          items:
                            type: string
                          type: array
                        preferred:
                          type: string
                        family:
                          type: string
                        familyPrefix:
                          type: string
                        formerFamily:
                          type: string
                        formerFamilyPrefix:
                          type: string
                        preferredSalutationCode:
                          type: string
                        qualificationAffixCode:
                          type: string
                        initials:
                          type: string
                      type: object
                  type: object
              type: object
            positionOpenQuantity:
              type: integer
            positionOfferingTypes:
              required:
                - value
              additionalProperties: false
              properties:
                value:
                  type: string
              type: object
            positionQualifications:
              additionalProperties: false
              properties:
                certifications:
                  items:
                    required:
                      - name
                    additionalProperties: false
                    properties:
                      name:
                        type: string
                      descriptions:
                        type: string
                    type: object
                  type: array
              type: object
            positionPeriod:
              required:
                - start
              additionalProperties: false
              properties:
                start:
                  type: string
                  format: date
                end:
                  type: string
                  format: date
              type: object
            workingPeriods:
              items:
                required:
                  - 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
                  minimumWorkDuration:
                    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
                  maximumWorkDuration:
                    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
            positionReason:
              type: string
            shiftDescription:
              type: string
            collectiveLabourAgreement:
              additionalProperties: false
              properties:
                name:
                  type: string
                id:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
              type: object
          type: object
        payRates:
          items:
            required:
              - rateType
              - code
              - amount
              - intervalCode
              - period
              - toBeBilled
              - toBePaid
            additionalProperties: false
            properties:
              id:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                type: object
              rateType:
                enum:
                  - Allowance/Expense
                  - TimeInterval
                type: string
              code:
                type: string
              amount:
                required:
                  - value
                  - currency
                additionalProperties: false
                properties:
                  value:
                    type: number
                  currency:
                    required:
                      - value
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                    type: object
                type: object
              intervalCode:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    enum:
                      - Daily
                      - FlatFee
                      - FourWeekly
                      - HourlyConsolidated
                      - HourlySplit
                      - Monthly
                      - Weekly
                      - Yearly
                    type: string
                type: object
              period:
                required:
                  - datePeriod
                additionalProperties: false
                properties:
                  datePeriod:
                    required:
                      - start
                    additionalProperties: false
                    properties:
                      start:
                        type: string
                        format: date
                      end:
                        type: string
                        format: date
                    type: object
                type: object
              multiplier:
                type: number
              toBeBilled:
                type: boolean
              toBePaid:
                type: boolean
            type: object
          type: array
        requestForQuotationDetails:
          additionalProperties: false
          properties:
            multiVendorDistribution:
              type: boolean
          type: object
        resourceClassificationInclusion:
          additionalProperties: false
          properties:
            department:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            costCenter:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            project:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            referenceNumber:
              type: string
          type: object
        staffingIds:
          additionalProperties: false
          properties:
            previousOrderId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - Customer
                    - Supplier
                  type: string
              type: object
            requestForQuotationId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - Customer
                    - Supplier
                  type: string
              type: object
            quoteId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - Supplier
                  type: string
              type: object
            masterOrderId:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              type: array
          type: object
        reasonOfChange:
          type: string
        comments:
          type: string
        customerSpecificRequirements:
          type: string
          format: uri-reference
      type: object
      $id: https://ontology.setu.nl//StaffingOrder
    HumanResource:
      $schema: https://json-schema.org/draft/2020-12/schema
      title: SETU HumanResource version 2.0
      description: >-
        YAML Schema as Generated by Semantic Treehouse on
        2024-11-01T16:09:54+01:00
      required:
        - documentId
        - supplier
        - customer
        - person
      additionalProperties: false
      properties:
        documentId:
          required:
            - value
            - schemeAgencyId
          additionalProperties: false
          properties:
            value:
              type: string
            schemeAgencyId:
              enum:
                - Customer
                - Supplier
              type: string
          type: object
        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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                      type: string
                  type: object
              type: object
            personContacts:
              items:
                required:
                  - name
                additionalProperties: false
                properties:
                  name:
                    required:
                      - formattedName
                    additionalProperties: false
                    properties:
                      formattedName:
                        type: string
                    type: object
                  communication:
                    additionalProperties: false
                    properties:
                      phone:
                        items:
                          required:
                            - formattedNumber
                          additionalProperties: false
                          properties:
                            formattedNumber:
                              type: string
                          type: object
                        type: array
                      email:
                        items:
                          required:
                            - address
                          additionalProperties: false
                          properties:
                            address:
                              type: string
                            useCode:
                              enum:
                                - Business
                                - Private
                              type: string
                          type: object
                        type: array
                    type: object
                  roleCode:
                    type: string
                type: object
              type: array
          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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                      type: string
                  type: object
              type: object
          type: object
        person:
          required:
            - id
            - name
            - communication
          additionalProperties: false
          properties:
            legalId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  type: string
              type: object
            birthDate:
              type: string
              format: date
            gender:
              required:
                - value
              additionalProperties: false
              properties:
                value:
                  type: string
              type: object
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              minItems: 1
              type: array
            name:
              required:
                - formattedName
              additionalProperties: false
              properties:
                formattedName:
                  type: string
                legal:
                  type: string
                given:
                  items:
                    type: string
                  type: array
                preferred:
                  type: string
                family:
                  type: string
                familyPrefix:
                  type: string
                formerFamily:
                  type: string
                formerFamilyPrefix:
                  type: string
                preferredSalutationCode:
                  type: string
                qualificationAffixCode:
                  type: string
                initials:
                  type: string
              type: object
            communication:
              additionalProperties: false
              properties:
                address:
                  additionalProperties: false
                  properties:
                    countryCode:
                      required:
                        - value
                      additionalProperties: false
                      properties:
                        value:
                          type: string
                      type: object
                    city:
                      type: string
                    postalCode:
                      type: string
                    streetName:
                      type: string
                    houseNumber:
                      type: string
                    houseNumberAddition:
                      type: string
                    buildingAddition:
                      type: string
                  type: object
                phone:
                  items:
                    required:
                      - formattedNumber
                      - useCode
                    additionalProperties: false
                    properties:
                      formattedNumber:
                        type: string
                      name:
                        type: string
                      useCode:
                        type: string
                    type: object
                  type: array
                email:
                  items:
                    required:
                      - address
                    additionalProperties: false
                    properties:
                      address:
                        type: string
                      name:
                        type: string
                      useCode:
                        enum:
                          - Business
                          - Private
                        type: string
                    type: object
                  type: array
              type: object
            primaryLanguage:
              additionalProperties: false
              properties:
                value:
                  type: string
              type: object
            birthPlace:
              type: string
            nationality:
              items:
                type: string
              type: array
            legalDocuments:
              items:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                  documentType:
                    type: string
                  issueDate:
                    type: string
                    format: date
                  expirationDate:
                    type: string
                    format: date
                type: object
              type: array
            residenceAddress:
              additionalProperties: false
              properties:
                countryCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                city:
                  type: string
                postalCode:
                  type: string
                streetName:
                  type: string
                houseNumber:
                  type: string
                houseNumberAddition:
                  type: string
                buildingAddition:
                  type: string
              type: object
          type: object
        profiles:
          additionalProperties: false
          properties:
            certifications:
              items:
                required:
                  - name
                additionalProperties: false
                properties:
                  id:
                    required:
                      - value
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                    type: object
                  name:
                    type: string
                  effectiveTimePeriod:
                    additionalProperties: false
                    properties:
                      validFrom:
                        type: string
                      validTo:
                        type: string
                    type: object
                  firstIssued:
                    type: string
                  issuingAuthority:
                    required:
                      - name
                    additionalProperties: false
                    properties:
                      name:
                        type: string
                    type: object
                  descriptions:
                    type: string
                type: object
              type: array
            qualifications:
              items:
                required:
                  - competencyName
                  - description
                additionalProperties: false
                properties:
                  competencyIds:
                    required:
                      - value
                      - schemeAgencyId
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      schemeAgencyId:
                        type: string
                    type: object
                  competencyName:
                    type: string
                  description:
                    type: string
                  startDate:
                    type: string
                    format: date
                  endDate:
                    type: string
                    format: date
                type: object
              type: array
            attachments:
              items:
                required:
                  - descriptions
                additionalProperties: false
                properties:
                  content:
                    required:
                      - value
                      - mimeType
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      mimeType:
                        type: string
                    type: object
                  url:
                    type: string
                  descriptions:
                    enum:
                      - CV
                      - DrivingLicense
                      - IdCard
                      - Passport
                      - VAR
                      - VOG
                      - '[other]'
                    type: string
                type: object
              type: array
            personAvailability:
              additionalProperties: false
              properties:
                availabilityDates:
                  items:
                    required:
                      - startDateTime
                    additionalProperties: false
                    properties:
                      startDateTime:
                        type: string
                      endDateTime:
                        type: string
                    type: object
                  type: array
              type: object
            workingPeriods:
              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
              type: array
          type: object
        payRates:
          items:
            required:
              - rateType
              - code
              - amount
              - intervalCode
              - period
              - toBeBilled
              - toBePaid
            additionalProperties: false
            properties:
              id:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                type: object
              rateType:
                enum:
                  - Allowance/Expense
                  - TimeInterval
                type: string
              code:
                type: string
              amount:
                required:
                  - value
                  - currency
                additionalProperties: false
                properties:
                  value:
                    type: number
                  currency:
                    required:
                      - value
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                    type: object
                type: object
              intervalCode:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    enum:
                      - Daily
                      - FlatFee
                      - FourWeekly
                      - HourlyConsolidated
                      - HourlySplit
                      - Monthly
                      - Weekly
                      - Yearly
                    type: string
                type: object
              period:
                required:
                  - datePeriod
                additionalProperties: false
                properties:
                  datePeriod:
                    required:
                      - start
                    additionalProperties: false
                    properties:
                      start:
                        type: string
                        format: date
                      end:
                        type: string
                        format: date
                    type: object
                type: object
              multiplier:
                type: number
              toBeBilled:
                type: boolean
              toBePaid:
                type: boolean
            type: object
          type: array
        resourceClassificationInclusion:
          additionalProperties: false
          properties:
            department:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            costCenter:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            project:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            referenceNumber:
              type: string
          type: object
        staffingIds:
          additionalProperties: false
          properties:
            requestForQuotationId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - Customer
                    - Supplier
                  type: string
              type: object
          type: object
        reasonOfChange:
          type: string
        customerSpecificRequirements:
          type: string
          format: uri-reference
      type: object
      $id: https://ontology.setu.nl//HumanResource
    Assignment:
      $schema: https://json-schema.org/draft/2020-12/schema
      title: SETU Assignment version 2.0 (DRAFT)
      description: Generated by Semantic Treehouse on 2024-11-01T16:08:22+01:00
      required:
        - documentId
        - customer
        - payRates
        - positionProfile
        - assignedWorker
      additionalProperties: false
      properties:
        documentId:
          required:
            - value
            - schemeAgencyId
          additionalProperties: false
          properties:
            value:
              type: string
            schemeAgencyId:
              enum:
                - Supplier
              type: string
          type: object
        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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                      type: string
                  type: object
              type: object
            personContacts:
              items:
                required:
                  - name
                additionalProperties: false
                properties:
                  name:
                    required:
                      - formattedName
                    additionalProperties: false
                    properties:
                      formattedName:
                        type: string
                    type: object
                  communication:
                    additionalProperties: false
                    properties:
                      phone:
                        items:
                          required:
                            - formattedNumber
                          additionalProperties: false
                          properties:
                            formattedNumber:
                              type: string
                          type: object
                        type: array
                      email:
                        items:
                          required:
                            - address
                          additionalProperties: false
                          properties:
                            address:
                              type: string
                            useCode:
                              enum:
                                - Business
                                - Private
                              type: string
                          type: object
                        type: array
                    type: object
                  roleCode:
                    type: string
                type: object
              type: array
          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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                      type: string
                  type: object
              type: object
            personContacts:
              items:
                required:
                  - name
                additionalProperties: false
                properties:
                  name:
                    required:
                      - formattedName
                    additionalProperties: false
                    properties:
                      formattedName:
                        type: string
                    type: object
                  communication:
                    additionalProperties: false
                    properties:
                      phone:
                        items:
                          required:
                            - formattedNumber
                          additionalProperties: false
                          properties:
                            formattedNumber:
                              type: string
                          type: object
                        type: array
                      email:
                        items:
                          required:
                            - address
                          additionalProperties: false
                          properties:
                            address:
                              type: string
                            useCode:
                              enum:
                                - Business
                                - Private
                              type: string
                          type: object
                        type: array
                    type: object
                  roleCode:
                    type: string
                type: object
              type: array
          type: object
        resourceClassificationInclusion:
          additionalProperties: false
          properties:
            department:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            costCenter:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            project:
              required:
                - code
              additionalProperties: false
              properties:
                name:
                  type: string
                code:
                  type: string
              type: object
            referenceNumber:
              type: string
            purchaseOrderNumber:
              type: string
          type: object
        payRates:
          items:
            required:
              - rateType
              - code
              - amount
              - intervalCode
              - period
              - toBeBilled
              - toBePaid
            additionalProperties: false
            properties:
              id:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                type: object
              rateType:
                enum:
                  - Allowance/Expense
                  - TimeInterval
                type: string
              code:
                type: string
              amount:
                required:
                  - value
                  - currency
                additionalProperties: false
                properties:
                  value:
                    type: number
                  currency:
                    required:
                      - value
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                    type: object
                type: object
              intervalCode:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    enum:
                      - Daily
                      - FlatFee
                      - FourWeekly
                      - HourlyConsolidated
                      - HourlySplit
                      - Monthly
                      - Weekly
                      - Yearly
                    type: string
                type: object
              period:
                required:
                  - datePeriod
                additionalProperties: false
                properties:
                  datePeriod:
                    required:
                      - start
                    additionalProperties: false
                    properties:
                      start:
                        type: string
                        format: date
                      end:
                        type: string
                        format: date
                    type: object
                type: object
              multiplier:
                type: number
              toBeBilled:
                type: boolean
              toBePaid:
                type: boolean
              purchaseOrderLineItem:
                type: string
            type: object
          minItems: 1
          type: array
        positionProfile:
          required:
            - positionPeriod
            - workingPeriods
          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
            jobCategories:
              required:
                - id
              additionalProperties: false
              properties:
                id:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
              type: object
            positionLocation:
              items:
                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
                  name:
                    type: string
                  countryCode:
                    required:
                      - value
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                    type: object
                  city:
                    type: string
                  postalCode:
                    type: string
                  streetName:
                    type: string
                  houseNumber:
                    type: string
                  houseNumberAddition:
                    type: string
                  buildingAddition:
                    type: string
                  primaryLocation:
                    type: boolean
                type: object
              type: array
            positionOfferingTypes:
              required:
                - value
              additionalProperties: false
              properties:
                value:
                  type: string
              type: object
            positionPeriod:
              required:
                - start
              additionalProperties: false
              properties:
                start:
                  type: string
                  format: date
                expectedEnd:
                  type: string
                  format: date
                actualEnd:
                  type: string
                  format: date
              type: object
            workingPeriods:
              items:
                required:
                  - 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
                  minimumWorkDuration:
                    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
                  maximumWorkDuration:
                    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
                              - Friday
                              - Monday
                              - Monthly
                              - Quarterly
                              - Saturday
                              - Sunday
                              - Thursday
                              - Tuesday
                              - Wednesday
                              - Weekly
                              - Yearly
                            type: string
                        type: object
                    type: object
                type: object
              minItems: 1
              type: array
            contractWorkingPeriods:
              items:
                required:
                  - 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
                  minimumWorkDuration:
                    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
                  maximumWorkDuration:
                    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
                              - Friday
                              - Monday
                              - Monthly
                              - Quarterly
                              - Saturday
                              - Sunday
                              - Thursday
                              - Tuesday
                              - Wednesday
                              - Weekly
                              - Yearly
                            type: string
                        type: object
                    type: object
                  effectiveTimePeriod:
                    required:
                      - validFrom
                      - validTo
                    additionalProperties: false
                    properties:
                      validFrom:
                        type: string
                      validTo:
                        type: string
                    type: object
                type: object
              type: array
            shiftDescription:
              type: string
            travelDistance:
              type: number
            collectiveLabourAgreement:
              additionalProperties: false
              properties:
                name:
                  type: string
                id:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
              type: object
            salaryScale:
              type: string
          type: object
        assignedWorker:
          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
            insuranceGroup:
              type: string
            employeePhase:
              type: string
            employeeContract:
              type: boolean
            onCallContract:
              items:
                required:
                  - onCallIndicator
                additionalProperties: false
                properties:
                  onCallIndicator:
                    type: boolean
                  validFrom:
                    type: string
                    format: date
                  validTo:
                    type: string
                    format: date
                type: object
              type: array
            vacationWorker:
              type: boolean
            recruitedBy:
              enum:
                - Customer
                - Supplier
              type: string
          type: object
        staffingIds:
          additionalProperties: false
          properties:
            requestForQuotationId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - Customer
                    - Supplier
                  type: string
              type: object
          type: object
        reasonOfChange:
          type: string
        customerSpecificRequirements:
          type: string
          format: uri-reference
      type: object
      $id: https://ontology.setu.nl//Assignment
    Timecard:
      $schema: https://json-schema.org/draft/2020-12/schema
      title: SETU Reporting Time and Expenses version 2.0
      description: ' YAML Schema generated by Semantic Treehouse on 2024-11-01T16:13:36+01:00'
      required:
        - documentId
        - person
        - period
      additionalProperties: false
      properties:
        documentId:
          required:
            - value
            - schemeAgencyId
          additionalProperties: false
          properties:
            value:
              type: string
            schemeAgencyId:
              enum:
                - Customer
                - Supplier
              type: string
          type: object
        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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                      type: string
                  type: object
              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:
                  enum:
                    - BTW
                  type: string
              type: object
            establishment:
              required:
                - responsibilityCode
              additionalProperties: false
              properties:
                responsibilityCode:
                  required:
                    - value
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                  type: object
                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
                  additionalProperties: false
                  properties:
                    value:
                      type: string
                    schemeAgencyId:
                      enum:
                        - KvK
                      type: string
                  type: object
              type: object
            personContacts:
              items:
                required:
                  - name
                additionalProperties: false
                properties:
                  name:
                    required:
                      - formattedName
                    additionalProperties: false
                    properties:
                      formattedName:
                        type: string
                    type: object
                  communication:
                    additionalProperties: false
                    properties:
                      phone:
                        items:
                          required:
                            - formattedNumber
                          additionalProperties: false
                          properties:
                            formattedNumber:
                              type: string
                          type: object
                        type: array
                      email:
                        items:
                          required:
                            - address
                          additionalProperties: false
                          properties:
                            address:
                              type: string
                            useCode:
                              enum:
                                - Business
                                - Private
                              type: string
                          type: object
                        type: array
                    type: object
                  roleCode:
                    type: string
                type: object
              type: array
          type: object
        department:
          required:
            - code
          additionalProperties: false
          properties:
            name:
              type: string
            code:
              type: string
          type: object
        costCenter:
          required:
            - code
          additionalProperties: false
          properties:
            name:
              type: string
            code:
              type: string
          type: object
        project:
          required:
            - code
          additionalProperties: false
          properties:
            name:
              type: string
            code:
              type: string
          type: object
        referenceNumber:
          type: string
        purchaseOrderNumber:
          type: string
        person:
          required:
            - id
          additionalProperties: false
          properties:
            id:
              items:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              maxItems: 2
              minItems: 1
              type: array
            name:
              required:
                - formattedName
              additionalProperties: false
              properties:
                formattedName:
                  type: string
              type: object
          type: object
        period:
          required:
            - datePeriod
          additionalProperties: false
          properties:
            datePeriod:
              required:
                - start
                - end
              additionalProperties: false
              properties:
                start:
                  type: string
                  format: date
                end:
                  type: string
                  format: date
              type: object
          type: object
        staffingIds:
          additionalProperties: false
          properties:
            assignmentId:
              required:
                - value
                - schemeAgencyId
              additionalProperties: false
              properties:
                value:
                  type: string
                schemeAgencyId:
                  enum:
                    - Supplier
                  type: string
              type: object
          type: object
        timeInterval:
          items:
            required:
              - id
              - typeCode
              - period
            additionalProperties: false
            properties:
              id:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              department:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              costCenter:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              project:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              referenceNumber:
                type: string
              purchaseOrderLineItem:
                type: string
              typeCode:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                type: object
              period:
                required:
                  - dateTimePeriod
                additionalProperties: false
                properties:
                  dateTimePeriod:
                    required:
                      - start
                    additionalProperties: false
                    properties:
                      start:
                        type: string
                      end:
                        type: string
                    type: object
                type: object
              timeTotal:
                type: string
              payRates:
                items:
                  required:
                    - amount
                    - intervalCode
                    - multiplier
                    - toBeBilled
                    - toBePaid
                  additionalProperties: false
                  properties:
                    amount:
                      required:
                        - value
                        - currency
                      additionalProperties: false
                      properties:
                        value:
                          type: number
                        currency:
                          required:
                            - value
                          additionalProperties: false
                          properties:
                            value:
                              type: string
                          type: object
                      type: object
                    intervalCode:
                      required:
                        - value
                      additionalProperties: false
                      properties:
                        value:
                          enum:
                            - FourWeekly
                            - HourlyConsolidated
                            - HourlySplit
                            - Monthly
                            - Weekly
                          type: string
                      type: object
                    multiplier:
                      type: number
                    toBeBilled:
                      type: boolean
                    toBePaid:
                      type: boolean
                  type: object
                maxItems: 2
                type: array
              dayAssignment:
                type: string
                format: date
              homeOfficeIndicator:
                enum:
                  - Home
                  - Office
                type: string
              customerSpecificRequirements:
                type: string
                format: uri-reference
            type: object
          type: array
        allowance:
          items:
            required:
              - id
              - typeCode
            additionalProperties: false
            properties:
              comment:
                required:
                  - note
                additionalProperties: false
                properties:
                  note:
                    type: string
                type: object
              id:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              department:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              costCenter:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              project:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              referenceNumber:
                type: string
              purchaseOrderLineItem:
                type: string
              typeCode:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                type: object
              period:
                additionalProperties: false
                properties:
                  datePeriod:
                    required:
                      - start
                    additionalProperties: false
                    properties:
                      start:
                        type: string
                        format: date
                      end:
                        type: string
                        format: date
                    type: object
                type: object
              payRates:
                items:
                  required:
                    - amount
                    - toBeBilled
                    - toBePaid
                  additionalProperties: false
                  properties:
                    amount:
                      required:
                        - value
                        - currency
                      additionalProperties: false
                      properties:
                        value:
                          type: number
                        currency:
                          required:
                            - value
                          additionalProperties: false
                          properties:
                            value:
                              type: string
                          type: object
                      type: object
                    toBeBilled:
                      type: boolean
                    toBePaid:
                      type: boolean
                  type: object
                maxItems: 2
                type: array
              quantity:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: number
                type: object
              attachment:
                additionalProperties: false
                properties:
                  content:
                    required:
                      - value
                      - mimeType
                    additionalProperties: false
                    properties:
                      value:
                        type: string
                      mimeType:
                        type: string
                    type: object
                  url:
                    type: string
                type: object
              customerSpecificRequirements:
                type: string
                format: uri-reference
            type: object
          type: array
        customerSpecificRequirements:
          type: string
          format: uri-reference
      type: object
      $id: https://ontology.setu.nl//Timecard
    Attachment:
      type: object
      description: The XML and JSON Schema for the Attachment
      properties:
        document:
          type: string
          format: byte
          description: Base64-encoded binary content of the document.
        mime type:
          type: string
          example: application/pdf
          enum:
            - application/pdf
            - application/vnd.oasis.opendocument.spreadsheet
            - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
            - text/csv
            - image/png
            - image/jpeg
          description: >-
            MIME type of the document being uploaded, e.g., 'application/pdf'.
            Please see the codelist of the MIME types codes over here:
            https://stpe.semantic-treehouse.nl/codelist/Codelist_1506927228_00216691
        filename:
          type: string
          description: >-
            Original name of the file, including the extension, e.g.,
            'document.docx'
          example: document.docx
      required:
        - document
        - mime type
    Attachment-Response:
      type: object
      properties:
        url:
          type: string
          format: uri
    allowance:
      type: object
      description: XML and JSON Schema for Allowances
      properties:
        allowance:
          items:
            required:
              - id
              - typeCode
            additionalProperties: false
            properties:
              comment:
                required:
                  - note
                additionalProperties: false
                properties:
                  note:
                    type: string
                type: object
              id:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              department:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              costCenter:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              project:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              referenceNumber:
                type: string
              purchaseOrderLineItem:
                type: string
              typeCode:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                type: object
              period:
                additionalProperties: false
                properties:
                  DatePeriod:
                    required:
                      - start
                    additionalProperties: false
                    properties:
                      start:
                        type: string
                        format: date
                      end:
                        type: string
                        format: date
                    type: object
                type: object
              payRates:
                items:
                  required:
                    - amount
                    - toBeBilled
                    - toBePaid
                  additionalProperties: false
                  properties:
                    amount:
                      required:
                        - value
                        - currency
                      additionalProperties: false
                      properties:
                        value:
                          type: number
                        currency:
                          required:
                            - value
                          additionalProperties: false
                          properties:
                            value:
                              type: string
                          type: object
                      type: object
                    toBeBilled:
                      type: boolean
                    toBePaid:
                      type: boolean
                  type: object
                maxItems: 2
                type: array
              quantity:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: number
                type: object
              attachment:
                required:
                  - value
                  - mimeType
                additionalProperties: false
                properties:
                  value:
                    type: string
                  mimeType:
                    type: string
                type: object
              customerSpecificRequirements:
                type: string
                format: uri-reference
            type: object
          type: array
    time-interval:
      type: object
      description: >-
        The XML and JSON Schemas for Tine Interval are specified by SETU. Please
        find the schemas here https://setu.semantic-treehouse.nl/specifications
      properties:
        timeInterval:
          items:
            required:
              - id
              - typeCode
              - period
            additionalProperties: false
            properties:
              comment:
                required:
                  - note
                additionalProperties: false
                properties:
                  note:
                    type: string
                type: object
              id:
                required:
                  - value
                  - schemeAgencyId
                additionalProperties: false
                properties:
                  value:
                    type: string
                  schemeAgencyId:
                    enum:
                      - Customer
                      - Supplier
                    type: string
                type: object
              department:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              costCenter:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              project:
                required:
                  - code
                additionalProperties: false
                properties:
                  name:
                    type: string
                  code:
                    type: string
                type: object
              referenceNumber:
                type: string
              purchaseOrderLineItem:
                type: string
              typeCode:
                required:
                  - value
                additionalProperties: false
                properties:
                  value:
                    type: string
                type: object
              period:
                required:
                  - DateTimePeriod
                additionalProperties: false
                properties:
                  DateTimePeriod:
                    required:
                      - start
                    additionalProperties: false
                    properties:
                      start:
                        type: string
                      end:
                        type: string
                    type: object
                type: object
              timeTotal:
                type: string
              payRates:
                items:
                  required:
                    - amount
                    - intervalCode
                    - multiplier
                    - toBeBilled
                    - toBePaid
                  additionalProperties: false
                  properties:
                    amount:
                      required:
                        - value
                        - currency
                      additionalProperties: false
                      properties:
                        value:
                          type: number
                        currency:
                          required:
                            - value
                          additionalProperties: false
                          properties:
                            value:
                              type: string
                          type: object
                      type: object
                    intervalCode:
                      required:
                        - value
                      additionalProperties: false
                      properties:
                        value:
                          enum:
                            - FourWeekly
                            - HourlyConsolidated
                            - HourlySplit
                            - Monthly
                            - Weekly
                          type: string
                      type: object
                    multiplier:
                      type: number
                    toBeBilled:
                      type: boolean
                    toBePaid:
                      type: boolean
                  type: object
                maxItems: 2
                type: array
              dayAssignment:
                type: string
                format: date
              homeOfficeIndicator:
                enum:
                  - Home
                  - Office
                type: string
              customerSpecificRequirements:
                type: string
                format: uri-reference
            type: object
          type: array
    Invoice:
      type: object
      description: >-
        The XML and JSON Schemas for the Invoice message are specified by SETU.
        Please find the schemas here
        https://setu.semantic-treehouse.nl/specifications
      properties: {}
    error-object:
      type: object
      properties:
        code:
          type: string
        description:
          type: string
  responses:
    '201':
      description: Created. Successful request, resource is created. (synchronous)
    '202':
      description: >-
        Accepted. Successful request, resource is not (yet) created.
        (asynchronous). This is not supported by the SETU.
    '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/json:
          schema:
            $ref: '#/components/schemas/error-object'
    '401':
      description: >-
        401 Unauthorized | The request lacks valid authentication credentials
        for the resource
      content:
        application/json:
          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/json:
          schema:
            $ref: '#/components/schemas/error-object'
    '404':
      description: 404 Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error-object'
    '500':
      description: 500 Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error-object'
