API

Naam
Employees
Versie
v1.1.0
Sector(en) P
PO VO
Status P
Actief

Transactierollen P

Bron Afnemer

Endpoints

Beschikbare endpoints voor deze API.

2 endpoints

API-specificatie (YAML)

Volledige definitie uit het afsprakenstelsel.

openapi: 3.0.0
info:
  title: Employees API
  version: '1.1.0'
  description: |-
    The Employees API is implemented by the `Administratiesysteem onderwijsmedewerker`.

    Employee data is split into the following objects with corresponding attributes:
    - Basic data: identifiers and name
    - Communication: email, phone, and mobile
    - Roles: organisation roles of the employee within the school

    Not all Employee attributes are available to all consuming reference components.
    All objects have a different security scope which allows the `Administratiesysteem onderwijsmedewerker` to share the attributes only with the reference components that are allowed to receive the attributes.

    All consuming reference components require consent to request data from the Employees API.
    The Notifications API can be used by consuming reference components to receive notifications about new, modified, or deleted entities within the Employees API.

    The Employees API has a scope of primary and secondary education. Vocational education is out of scope. For Vocational Education we advise to use the [Open Education API (OOAPI)](https://openonderwijsapi.nl/).
  contact:
    name: Edu-V
    url: www.edu-v.org/afsprakenstelsel
    email: info@edu-v.org
components:
  schemas:

    schemaVersion:
      type: string
      description: |
        Schema version of this API using semantic versioning 2.0.0.
        The API version number is communicated in the header.
        The major version is communicated in the URI.
        For more information see the [Edu-V versioning guidelines](https://edu-v.atlassian.net/wiki/spaces/AFSPRAKENS/pages/9437200/Versiebeheer).
      default: 1.1.0

    Employee:
      title: Employee
      description: |
        The Employee object with its identifiers and name information.

        Based on the scopes additional attributes can be included in this object.

        ### employee.communication
        Communication data of the Employee. For Employees this is the `e-mail` address, `phone` number or `mobile` phone number as provided by the School.

        ### employee.roles
        `organisationRoles` of the Employee within the school.
      type: object
      x-tags:
        - Employee
      properties:
        userMasterIdentifier:
          type: string
          description: |
            The primary identifier for a User.
            For Students the ECK iD is used.
            For Employees this value is empty. There is no primary identifier for Employees.
            (either userMasterIdentifier or userIds is required)
        userIds:
          type: array
          description: |
            A secondary identifier for a User. This value is used whenever the primary identifier is not available.
            For Employees this value is mandatory.
            (either userMasterIdentifier or userIds is required)
          items:
            type: object
            properties:
              userId:
                type: string
              userIdType:
                type: string
                enum:
                  - NEPPI # nlPersonProfileId – value can be used for students and employees
                  - BPI # Basispoort ID – value can be used for students and employees
                  - eduID # eduID identifier – value can be used for students and employees
                  - NEPRI # nlPersonRealId – value can be used for students only
                  - ASI # Las-key – value can be used for students only
                  - eckId # ECK iD – value can be used for employees only, eckId is userIdType for userMasterIdentifier for students
            required:
              - userId
              - userIdType
        givenName:
          type: string
        preferredFirstName:
          type: string
        familyName:
          type: string
        familyNamePrefix:
          type: string
        email:
          type: string
          description: 'E-mail address hosted by school (e.g. L123456@school.nl).'
        phone:
          type: string
          description: 'Phone number as provided by the school.'
        mobile:
          type: string
          description: 'Mobile phone number as provided by the school.'
        organisationRoles:
          type: array
          description: 'The organisation roles the Employee has within the organisation.'
          items:
            type: object
            properties:
              organisation:
                $ref: '#/components/schemas/SchoolReference'
              organisationRole:
                type: string
                description: 'The organisation role the Employee has within the organisation.'
                enum:
                  - administratief-medewerker
                  - applicatiebeheerder
                  - begeleider
                  - invalkracht
                  - ibp-er
                  - leermiddelencoordinator
                  - leraar
                  - mentor
                  - onderwijsbestuurder
                  - onderwijsdirecteur
                  - stagiair
              beginDate:
                type: string
                description: 'The start date on which the role becomes active (inclusive). Format: YYYY-MM-DD (according to RFC3339).'
                format: date
                example: '2022-07-31'
              endDate:
                type: string
                description: 'The end date on which the role becomes inactive (exclusive). Format: YYYY-MM-DD (according to RFC3339).'
                format: date
                example: '2024-08-31'
            required:
              - organisation
              - organisationRole
              - beginDate
        alias:
          type: string
          format: string
          description: |
            An additional field to distinct employees on screen who carry the same name.
        status:
          description: |
            The status field gives an indication to Consumers about the status of an object.
            Consumers can delete objects that are flagged `tobedeleted`  as such if they wish.

            The status attribute is based on the [Base Class from OneRoster](https://www.imsglobal.org/sites/default/files/spec/oneroster/v1p2/rostering-informationmodel/OneRosterv1p2RosteringService_InfoModelv1p0.html#Data_Base).
          type: string
          enum:
            - active
            - tobedeleted
        dateCreated:
          type: string
          description: 'Indicates the date and time the object was first created. Format: Conform openapi in ZULU time zoals gespecificeerd in RFC 3339, section 5.6.'
          format: date-time
          example: "2017-07-21T17:32:28Z"
        dateLastModified:
          type: string
          description: 'Indicates the date and time the object was last modified. Format: Conform openapi in ZULU time zoals gespecificeerd in RFC 3339, section 5.6.'
          format: date-time
          example: "2022-08-11T15:31:12Z"
      required:
        - userIds
        - givenName
        - familyName
        - status
        - dateCreated
        - dateLastModified

    UserReference:
      type: object
      title: UserReference
      properties:
        userMasterIdentifier:
          type: string
          description: |
            The primary identifier for a User.
            For Students the ECK iD is used.
            For Employees this value is empty. There is no primary identifier for Employees.
            (either userMasterIdentifier or userIds is required)
        userIds:
          type: array
          description: |
            A secondary identifier for a User. This value is used whenever the primary identifier is not available.
            For Employees this value is mandatory.
            (either userMasterIdentifier or userIds is required)
          items:
            type: object
            properties:
              userId:
                type: string
              userIdType:
                type: string
                enum:
                  - NEPPI # nlPersonProfileId – value can be used for students and employees
                  - BPI # Basispoort ID – value can be used for students and employees
                  - eduID # eduID identifier – value can be used for students and employees
                  - NEPRI # nlPersonRealId – value can be used for students only
                  - ASI # Las-key – value can be used for students only
                  - eckId # ECK iD – value can be used for employees only, eckId is userIdType for userMasterIdentifier for students
            required:
              - userId
              - userIdType
      required:
        - userIds

    SchoolReference:
      type: object
      title: SchoolReference
      description: 'A reference to a School organisation.'
      properties:
        organisationMasterIdentifier:
          type: string
          description: |
            The primary identifier for a School. For Schools the `OnderwijsaanbiederId` is used.
            (either organisationMasterIdentifier or organisationIds is required)
          example: '104A158' # De Mariënborn
        organisationIds:
          type: array
          description: |
            A secondary identifier for the School. This value is used whenever the primary identifier is not available.
            (either organisationMasterIdentifier or organisationIds is required)
          items:
            type: object
            properties:
              organisationId:
                type: string
              organisationIdType:
                type: string
                enum:
                  - OIE_CODE # Onderwijsinstellingserkenningcode e.g. 09QQ (Marienbornschool)
                  - BP_ID # Basispoort gegenereerde identifier voor de school.
                  - DD_ID # Door de Centrale Registratie van Edu-iX gegenereerde DigiDeliveryId van de school.
                  - AS_ID # Door het Leerlingadministratiesysteem gegenereerde identifier van de school.
                  - V_ID # VestigingsId – BRIN6-formaat identifier voor vestigingen, inclusief dummy vestigingen.
            required:
              - organisationId
              - organisationIdType

    StatusResponse:
      title: StatusResponse
      type: object
      description: 'Functional status code and status message.'
      properties:
        status:
          type: integer
          description: 'See functional status codes within the Documentation.'
        statusMessage:
          type: string
          description: 'See functional status messages within the Documentation.'
      required:
        - status

  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.example.com/oauth2/token
          refreshUrl: https://api.example.com/oauth2/token
          scopes:
            eduv.employee.basic: 'a scope that gives access to employee identifiers and name.'
            eduv.employee.communication: 'a scope that gives access to employee communication attributes.'
            eduv.employee.roles: 'a scope that gives access to employee organisation roles attributes.'

paths:

  /employees:
    post:
      summary: Search Employee
      x-tags:
        - Employee
      tags:
        - Administratiesysteem onderwijsmedewerker
      operationId: search-employee
      description: 'Request an Employee object for a specified Employee at a School.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                school:
                  $ref: '#/components/schemas/SchoolReference'
                employee:
                  $ref: '#/components/schemas/UserReference'
              required:
                - school
                - employee
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Employee'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
      security:
        - OAuth2:
            - eduv.employee.basic
            - eduv.employee.communication
            - eduv.employee.roles

  /employees/school:
    parameters:
      - schema:
          type: string
        name: orgMasterId
        in: query
        required: false
        description: |
          The organisationMasterIdentifier of the school.
          This parameter is used when the primary identifier for a school (being the `OnderwijsaanbiederId`) is available.
      - schema:
          type: string
        name: orgId
        in: query
        required: false
        description: |
          The organisationIdentifier (secondary identifier) of the school.
          This parameter is used in combination with the orgIdType when the organisationMasterIdentifier is not available.
      - schema:
          type: string
          example: DD_ID
          enum:
            - OIE_CODE
            - BP_ID
            - DD_ID
            - AS_ID
            - V_ID
        name: orgIdType
        in: query
        required: false
        description: |
          The type of the organisationIdentifier.
          This parameter is used in combination with the orgId when the organisationMasterIdentifier is not available.
          The following values are supported:
          - `OIE_CODE`: OnderwijsInstellingserkenningcode
          - `BP_ID`: Basispoort-generated identifier for the school
          - `DD_ID`: DigiDeliveryId generated by the Central Registration of Edu-iX
          - `AS_ID`: LAS-generated identifier (LAS-Key) for the school
          - `V_ID`: VestigingsId – BRIN6-format identifier, including dummy locations
      - schema:
          type: boolean
        name: filterByOrgId
        in: query
        required: false
        description: |
          Controls whether the response is filtered to only include Employees belonging to the
          specific organisation identified by `orgId` and `orgIdType`, or whether all Employees
          of the associated Onderwijsaanbieder are returned.
          - `true`: Only Employees belonging to the specified secondary identifier are returned.
          - `false`: All Employees of the associated Onderwijsaanbieder are returned (to the extent authorisations have been configured).
          When omitted, a sector-specific default applies:
          - **PO (primary education):** defaults to `true` – response is filtered to the specified identifier.
          - **VO (secondary education):** defaults to `false` – response covers the full Onderwijsaanbieder scope.
          This parameter is only relevant in combination with `orgId` and `orgIdType`.
          When `orgMasterId` is used, this parameter must be absent or `false`.
          It is the responsibility of the consuming party to verify whether the Source supports
          filtering via this parameter before using it.
      - schema:
          type: string
        name: schoolPeriodId
        in: query
        required: false
        description: 'Optional filter to request all Employee objects within a specified SchoolPeriod and its corresponding schoolPeriodId.'
    get:
      summary: Get Employees for School
      x-tags:
        - Employee
      tags:
        - Administratiesysteem onderwijsmedewerker
      operationId: get-employees-for-school
      description: 'Request all Employee objects including basic information (identifiers and names) for a specified school.'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Employee'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
      security:
        - OAuth2:
            - eduv.employee.basic
            - eduv.employee.communication
            - eduv.employee.roles

x-tags:
  - name: Employee
  - name: EmployeeCommunication
  - name: EmployeeRoles