Titel | Employees API | |||||||||||||||||||||||
Status |
| |||||||||||||||||||||||
Versie | Documentatie: 0.09.41 | |||||||||||||||||||||||
schemaVersion: 0.09.41 | ||||||||||||||||||||||||
Datum | 19 April 27 September 2024 | |||||||||||||||||||||||
Auteurs | Architectenraad Edu-V | |||||||||||||||||||||||
Acties |
|
De Employees API wordt gebruikt om persoonsgegevens over onderwijsmedewerkers uit het Administratiesysteem onderwijsmedewer te delen in het Afsprakenstelsel Edu-V. Deze API wordt aangeboden als onderdeel van de gegevensdienst Onderwijsmedewerker met het Administratiesysteem onderwijsmedwerker als Bron.
Tip |
---|
Scope: werkingsgebieden funderend onderwijs en vavo De afspraken met betrekking tot de gegevensdiensten uit de administratiesystemen zijn van toepassing op de werkingsgebieden:
De gegevensdiensten zijn niet ontwikkeld voor het middelbaar beroepsonderwijs. In het middelbaar beroepsonderwijs wordt gebruik gemaakt van OOAPI. |
De technische specificatie bestaat uit:
...
Gegevensdienst | Onderwijsmedewerkers |
Scopes |
|
EntiteitenObjecten |
|
Bron | Administratiesysteem onderwijsmedewerker |
Afnemer |
|
Endpoints | Administratiesysteem onderwijsmedewerker
|
Notifications | De Notifications API kan gebruikt worden om als afnemer een notificatie te ontvangen bij een wijziging in de stand (nieuw/gewijzigd/verwijderd). Hiervoor dient zowel de bron als de afnemer dan de Berichteninfrastructuur en de Notifications API te hebben geïmplementeerd. |
Anchor |
---|
...
|
...
|
...
Object: Employee (Onderwijsmedewerker)
Het object Student Employee beschrijft de identifiers en , de namen van de onderwijsdeelnemeronderwijsmedewerker en overige kenmerken. Dit object is beschikbaar vanuit de scope employee.basic
.
Veld | Type | Format | Omschrijving | Voorbeeld | O/V | Vullingsregel |
userMasterIdentifier | string | string | De primaire identifier voor de onderwijsmedewerker. | V* | De werkingsregels is dat de primaire identifier wordt gehanteerd in de berichtenhet object. Er is nog geen primaire identifier voor onderwijsmedewerkers. Enkel secundaire identifiers worden gehanteerd. In geval van een uitzonderingssituatie kan gebruik gemaakt van een secundaire identifier. | |
userIds | array | userId | Een lijst van secundaire identifiers die gehanteerd kan worden als de primaire identifier ontbreekt. | [{userId: ‘pietjepukkelen@petteflatcollege', userIdType: 'nlEduPersonRealId’}] | V* | Zodra een secundaire identifier voor een uitzonderingssituatie gehanteerd wordt dan wordt naast het Id ook het Type gespecificeerd. Zie de pagina Identiteiten voor de toegestane secundaire identifiers. |
givenName | string | string | De voornaam (of voornamen) van de onderwijsmedewerker | V | ||
preferredFirstName | string | string | De roepnaam van de onderwijsmedewerker | V | ||
familyName | string | string | De achternaam van de onderwijsmedewerker | V | ||
familyNamePrefix | string | string | Het tussenvoegsel uit de achternaam van de onderwijsmedewerker | O | ||
sourceId | string | string | Een unieke identifier die gegenereerd is door het Administratiesysteem onderwijsmedewerker en binnen dit systeem uniek is. | V | De sourceId wordt gebruikt om informatie over dit object op te vragen in de koppelvlakspecificatie. Deze identifier is betekenisloos en daarmee geen persoonsgegeven. | |
status | string | ENUM | De status van dit object. | active | V | De status is een verplicht veld en geef aan of het object al dan niet verwijderd kan worden. |
dateCreated | string | datetime | Datum en tijdstip waarop de entiteit is aangemaakt | 2017-07-21T17:32:28Z | V | |
dateLastModified | string | datetime | Tijdstempel waarop één of meerdere van de hierboven genoemde attributen het laatst zijn gewijzigd | 2022-08-11T15:31:12Z | V |
Anchor | ||||
---|---|---|---|---|
|
De attributen EmployeeCommunication bevatten het mailadres en de telefoonnummers van de onderwijsmedewerker bij de onderwijsaanbieder. Deze attributen alleen beschikbaar voor referentiecomponenten die doelbinding hebben voor deze attributen. Voor deze attributen geldt een separate scope employee.communication
.
Veld | Type | Format | Omschrijving | Voorbeeld | O/V | Vullingsregel |
string | string | Het e-mailadres van de onderwijsmedewerker zoals beschikbaar gesteld door de onderwijsaanbieder | employee@school.nl | VO | ||
phone | string | string | Het vaste telefoonnummer van de onderwijsmedewerker zoals beschikbaar gesteld door de onderwijsaanbieder | 010-1234567 | O | |
mobile | string | string | Het mobiele telefoonnummer van de onderwijsmedewerker zoals beschikbaar gesteld door de onderwijsaanbieder | 06-12345678 | O |
Anchor | ||||
---|---|---|---|---|
|
De EmployeeRoles attributen bevatten de organisatiefuncties die een onderwijsmedewerker vervult bij een onderwijsaanbieder. Dit attribuut is alleen beschikbaar voor referentiecomponenten die doelbinding hebben voor deze attributen. Voor deze attributen geldt een separate scope employee.roles
.
...
Veld | Type | Format | Omschrijving | Voorbeeld | O/V | Vullingsregel |
organisationRoles | array | organisationRoleOrganisationRole | Een lijst met organisatierollen die de onderwijsmedewerker vervult bij onderwijsaanbieders. | O |
Anchor | ||||
---|---|---|---|---|
|
...
OrganisationRoles
De organisatierol (organisationRole) van een onderwijsmedewerker betreft een rol die wordt vervuld op een onderwijsaanbieder..
...
Open api | ||||||
---|---|---|---|---|---|---|
| ||||||
openapi: 3.0.0 info: title: Employees API version: '0.09.41' 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 consunming 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 entitities within the Employees API. The Employees API has a scope of primary and secundarysecondary education. Vocational education is out of scope. For Vocational Education we advice 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: 0.09.41 Employee: title: Employee description: ' | The Employee object with its identifiers and name information.' type: object Based on the scopes additional x-tags:attributes can be included in this object. - Employee ### properties:employee.communication userMasterIdentifier:Communication data of the Employee. For Employees this is the type: string description: |`e-mail` address, `phone` number or `mobile` phone number as provided by the School. ### employee.roles The primary identifier`organisationRoles` forof the Employee. within the school. type: object For Employees this value is empty. There is no primary identifier for Employees. x-tags: - Employee userIdsproperties: userMasterIdentifier: type: array type: string description: | description: | A secundary identifier for a User. This value is used whenever the The primary identifier isfor notthe availableEmployee. For Employees this value is mandatoryempty. There is no primary identifier for Employees. (either userMasterIdentifier or userIds: is required) itemstype: array typedescription: object| properties:A secondary identifier for a User. This value is used whenever the primary identifier is userId:not available. For Employees this type:value stringis mandatory. (either userIdType: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 - eckId # ECK iD – value can be used for employees only, eckId is userIdType for userMasterIdentifier for students required: - userId - userIdType givenName: type: string familyNamepreferredFirstName: type: string familyNamePrefixfamilyName: 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 - organisationRoles - beginDate sourceId: type: string format: uuid description: | The Source Identifier of the object. This is a GUID System ID for an object. This is the GUID that Consumers will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields), userMasterIdentifier or userIds they use to SourceId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII). The sourceId 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). 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 - sourceId - dateCreated - dateLastModified # This UserReference might not be necessary for the Employees API. References are made based on the sourceId of the Employee object. 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 secundarysecondary 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 secundarysecondary 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) - VE_CODE # Vestigingserkenningcode e.g. 09QQ00 (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. 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 identifersidentifiers 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: - EnrollmentEmployee 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/{sourceId}: parameters: - schema: type: string name: sourceId in: path required: true description: 'Reference to the sourceId of the Employee object.' - schema: type: string name: orgMasterId in: query required: false description: | The organisationMasterIdentifier of the school. This parameter is used when the primairyprimary identifier for a school (being the `OnderwijsaanbiederId`) is available. - schema: type: string name: orgId in: query required: false description: | The organisationIdentifier (secundarysecondary 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 - VEBP_CODEID - BPDD_ID - DDAS_ID name: orgIdType - AS_ID name: orgIdType in: 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. get: summary: 'Get Employee' x-tags: - Employee tags: - Administratiesysteem onderwijsmedewerker operationId: get-employee description: | Request an Employee object based on its sourceId. The Source Identifier is the GUID System ID for an object. This is the GUID that Consumers will refer to when making API calls. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII). responses: '200': description: OK content: application/json: schema: $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 primairyprimary identifier for a school (being the `OnderwijsaanbiederId`) is available. - schema: type: string name: orgId in: query required: false description: | The organisationIdentifier (secundarysecondary 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 - VE_CODE - BP_ID - DD_ID - AS_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. - schema: type: integerstring nameformat: startdate-time in: query descriptionname: 'Startsince point for pagination of results, defaults to 0,' required: false examples: description: 'Request all objects modified after the specified timestamp. defaultFormat: Conform openapi in ZULU time as specified in RFC 3339, value: 0section 5.6' example: "2017-07-21T17:32:28Z" summary get: The start point for pagination summary: Get Employees for -School schema: x-tags: type: integer - Employee maximumtags: 100 - name:Administratiesysteem limitonderwijsmedewerker inoperationId: queryget-employees-for-school description: 'LimitRequest ofall numberEmployee ofobjects resultsincluding returnedbasic byinformation page,(identifiers defaultsand tonames) 20for witha maxspecified 100school.' examplesresponses: default'200': valuedescription: 20OK summarycontent: The default value if none is provided application/json: max: schema: value: 100 summarytype: array The largest recommended page size - schema: items: type: string format$ref: date-time'#/components/schemas/Employee' in'400': query namedescription: sinceBad Request required: false content: description: 'Request all objects modified after theapplication/json: specified timestamp. Format: Conform openapi in ZULU time as specified in RFC 3339, section 5.6' schema: example: "2017-07-21T17:32:28Z" get: $ref: '#/components/schemas/StatusResponse' summary: Get Employees for School '401': x-tags: description: Unauthorized - Employee tagscontent: - Administratiesysteem onderwijsmedewerker application/json: operationId: get-employees-for-school description: 'Request allschema: Employee objects including basic information (identifiers and names) for a specified school.' $ref: responses:'#/components/schemas/StatusResponse' '200403': description: OKForbidden content: application/json: schema: type: array items: $ref: '#/components/schemas/EmployeeStatusResponse' '400404': description: BadNot RequestFound content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '401'security: - descriptionOAuth2: Unauthorized content: - eduv.employee.basic application/json: - eduv.employee.communication schema: - eduv.employee.roles x-tags: - name: Employee - name: EmployeeCommunication - $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: - employee.basic - employee.communication - employee.roles x-tags: - name: Employee - name: EmployeeCommunication - name: name: EmployeeRoles |
...
Release notes
0.0.1: De Rostering API was voorheen een onderdeel van de SIS API. Hierin waren de volgende wijzingen gedaan:
0.0.1: Eerste draft van de API.
0.0.2: Berichtdefinities Objecten en YAML files zijn toegevoegd t.b.v. de 80 procent specificatie.
0.0.3: De technische specificatie is verder uitgewerkt. Ook is de feedback uit de werkgroepen verwerkt in een volgende versie:
GET all endpoints zijn toegevoegd voor alle objecten.
Query parameter edu_org_id is toegevoegd aan alle endpoints als implementatie van regie op gegevens en de M2M identificatie en authenticatie.
Bericht Object Teacher is hernoemd naar Employee inclusief het attribuut role. In dezelfde lijn is ook teacherReference hernoemd naar employeeReference
De waardelijst studyYear is verduidelijkt.
Het attribuut class van de Student is een separaat bericht object geworden inclusief employees.
De status- en foutcodes zijn toegevoegd aan de documentatie en de YAML.
In de YAML is aangegeven welke referentiecomponent de endpoints aanbiedt als Producer.
De YAML is geactualiseerd op basis van de bovenstaande wijzigingen.
0.0.4: Berichtdefinities Objecten geactualiseerd op basis van herziening rollen en referentiecomponenten in het architectuurkader.
0.0.5: Terminologie in YAML bijgewerkt.
0.0.6: Gegevensdiensten van SIS API opgesplitst in:
Onderwijsorganisatie
Adresgegevens fijndistributie
Onderwijsaanbod
0.0.2: De Employees API is opgesteld op basis van een herziening van de SIS API. In deze herziening is aansluiting gezocht bij de best practices uit bestaande standaarden en een uiteenzetting van ontwerpeisen vanuit de flexibilisering van het onderwijs.
0.0.3: De volgende wijzigingen zijn gedaan:
Wijzigingen in de architectuur:
Attribuut schemaVersion is verwijderd uit de berichtspecificatiesobjecten.
Query parameter schemaVersion is verwijderd uit de koppelvlakken.
Query parameter edu_org_id is verwijderd uit de koppelvlakken waar consent voor nodig is.
Query parameters orgMasterId, orgId en orgIdType zijn toegevoegd om informatie over een onderwijsaanbieder op te vragen.
0.0.4: De separate endpoints voor de diverse scopes zijn gecombineerd in een enkel endpoint. Ook is een endpoint toegevoegd om een onderwijsmedewerker op te vragen op basis van een userId en een userIdType.
0.0.5: Typo’s in de YAML. preferredFirstName toegevoegd aan attribuut Employee.
0.9.0: Het Bestuurlijk Overleg heeft tijdens de bijeenkomst van 27 juni 2024 het Afsprakenstelsel Edu-V als versie 0.9.0 goedgekeurd voor implementatie.
0.0.4: De separate endpoints voor de diverse scopes zijn gecombineerd in een enkel endpoint. Ook is een endpoint toegevoegd om een onderwijsmedewerker op te vragen op basis van een userId en een userIdType9.1: Wijzigingen naar aanleiding van RFC’s:
Op basis van RFC002 is de scope aangepast met een prefix
eduv.
. Dit stelt leveranciers in staat om onderscheid te maken tussen gegevensuitwisselingen met leveranciers binnen en buiten het Edu-V afsprakenstelsel.De parameters voor paginering zijn uit de koppelvlakspecificatie verwijderd. Binnen het afsprakenstelsel zijn de afspraken hierover beschreven op de pagina paginering, sorteren en rate limiting.
De Vestigingserkenning is als secundaire identifier voor een onderwijsaanbieder verwijderd uit de koppelvlakspecificatie.