elisaado / somtoday-api-docs

Documentation for the SOMtoday API
69 stars 15 forks source link
api documentation markdown rest reverse-engineering school somtoday

SOMtoday REST API docs

Discord

Discord Chat

Table of contents

Some miscellaneous stuff

Click to open miscellaneous stuff - Endpoint for the API is returned when you fetch the access token - Always include the header "Accept" with the value of "application/json" so you won't get XML. (except if you want XML :-) ) (the authentication stuff always returns JSON)

- you can do sample requests using curl, for example: ```bash curl http://example.com/user/blah?active=true&limit=3 -d "key=value&otherkey=value" -H "AHeader: Value" ``` which will be listed here as | Name | Type | Value | |----------|--------|-------| | id | URL | blah | | active | Query | true | | limit | Query | 3 | | key | Body | value | | otherkey | Body | value | | AHeader | Header | Value | When there is a value that is unique to you (like username, password, or token), it will have a value like `[username]` I don't recommend using curl in your programming language, except for PHP but even there it's a pain. There are much better libraries.
A list of libraries for your language JavaScript: [window.fetch](https://developers.google.com/web/updates/2015/03/introduction-to-fetch)
NodeJS: [node-fetch](https://github.com/bitinn/node-fetch), [HTTP from stdlib](https://nodejs.org/api/http.html), [Request](https://github.com/request/request), [Axios](https://github.com/axios/axios)
Go: [net/http](https://golang.org/pkg/net/http/)
Ruby: [Faraday](https://github.com/lostisland/faraday), [HTTParty](https://github.com/jnunemaker/httparty)
Python: [requests](http://docs.python-requests.org/en/master/)
Please add more if you know more.

Fetching information

baseurl: returned when you fetch a token (somtoday_api_url), usually [lowercase snakecased schoolname]-api.somtoday.nl

All routes here are prefixed with that baseurl.

Current student(s): GET /rest/v1/leerlingen

Click to open This REST method might return multiple students (I cannot test), since it says /leerlingen (Dutch plural for student). I suppose it returns all students the current user has access to (so if a school administrator runs it, it will return all students on the school). #### Parameters | Name | Type | Value | |---------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | | additional | Parameter | pasfoto | The additional parameter is an optional GET parameter. #### Returns Depending on the additional parameters, some of the items in the result may not be present. Assuming `pasfoto` is set: ```json { "items": [ { "$type": "leerling.RLeerling", "links": [ { "id": 1234, "rel": "self", "type": "leerling.RLeerling", "href": "https://bonhoeffer-api.somtoday.nl/rest/v1/leerlingen/1234" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE(1234)", "type": "leerling.RLeerlingPrimer", "operations": ["READ"], "instances": ["INSTANCE(1234)"] } ], "additionalObjects": { "pasfoto": { "$type": "leerling.RLeerlingpasfoto", "links": [ { "id": 1234, "rel": "self" } ], "permissions": [], "additionalObjects": {}, "datauri": "" } }, "leerlingnummer": 450000, "roepnaam": "Eli", "achternaam": "Saado", "email": "450000@live.bc-enschede.nl", "mobielNummer": "06-00000000", "geboortedatum": "2000-00-00", "geslacht": "Man" } ] } ``` #### Example ```bash token='' school_url=https://bonhoeffer-api.somtoday.nl curl "$school_url/rest/v1/leerlingen" -H "Authorization: Bearer $token" -H "Accept: application/json" ``` --- ### Student by ID: `GET /rest/v1/leerlingen/[id]` #### Parameters | Name | Type | Value | |---------------|--------|-----------------------| | id | URL | [user id] | | Authorization | Header | Bearer [access_token] | #### Returns ```json { "links": [ { "id": 1234, "rel": "self", "type": "leerling.RLeerling", "href": "https://bonhoeffer-api.somtoday.nl/rest/v1/leerlingen/1234" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE(1234)", "type": "leerling.RLeerlingPrimer", "operations": ["READ"], "instances": ["INSTANCE(1234)"] } ], "additionalObjects": {}, "leerlingnummer": 450000, "roepnaam": "Eli", "achternaam": "Saado", "email": "450000@live.bc-enschede.nl", "mobielNummer": "06-00000000", "geboortedatum": "2000-00-00", "geslacht": "Man" } ``` #### Example ```bash token='' school_url=https://bonhoeffer-api.somtoday.nl id=1234 curl "$school_url/rest/v1/leerlingen/$id" -H "Authorization: Bearer $token" -H "Accept: application/json" ```

Grades: GET /rest/v1/resultaten/huidigVoorLeerling/[id]

Click to open Fetches the grades of the student. Note that all average grades are also grade items returned by the API. There are the different types of columns: the `type` property in the json (e.g. 'Toetskolom', 'ToetssoortGemiddeldeKolom'). #### Parameters | Name | Type | Value | |---------------|-----------|---------------------------------| | id | URL | [user id] | | Authorization | Header | Bearer [access_token] | | Range | Header | items=[LowerBound]-[UpperBound] | | additional | Parameter | berekendRapportCijfer | | additional | Parameter | samengesteldeToetskolomId | | additional | Parameter | resultaatkolomId | | additional | Parameter | cijferkolomId | | additional | Parameter | toetssoortnaam | | additional | Parameter | huidigeAnderVakKolommen | These LowerBound and UpperBound values are the amount of grades you want to request (the API uses pagination here). The value may not exceed 100, so the way to request **all** grades is by doing the following: 1. Request 0-99 2. Request 100-199 3. Request 200-299 4. Request .00-.99 5. Continue until the response contains less than 99 records 6. Profit! #### Returns ```js { "items": [ { "$type": "resultaten.RResultaat", "links": [ { "id": 1234, "rel": "self", "type": "resultaten.RResultaat", "href": "https://api.somtoday.nl/rest/v1/resultaten/1234" } ], "permissions": [ { "full": "resultaten.RResultaat:READ:INSTANCE()", "type": "resultaten.RResultaat", "operations": [ "READ" ], "instances": [ "INSTANCE()" ] } ], "additionalObjects": {}, "herkansingstype": "Geen", "resultaat": "7.9", "geldendResultaat": "7.9", "datumInvoer": "2019-09-10T13:41:11.805+02:00", "teltNietmee": false, "toetsNietGemaakt": false, "leerjaar": 0, "periode": 0, "examenWeging": 0, "isExamendossierResultaat": true, "isVoortgangsdossierResultaat": false, "type": "ToetssoortGemiddeldeKolom", "vak": { "links": [ { "id": 1234, "rel": "self", "type": "onderwijsinrichting.RVak", "href": "https://api.somtoday.nl/rest/v1/vakken/1234" } ], "permissions": [ { "full": "onderwijsinrichting.RVak:READ:INSTANCE()", "type": "onderwijsinrichting.RVak", "operations": [ "READ" ], "instances": [ "INSTANCE()" ] } ], "additionalObjects": {}, "afkorting": "ckv", "naam": "culturele en kunstzinnige vorming" }, "leerling": { "links": [ { "id": 1234, "rel": "self", "type": "leerling.RLeerlingPrimer", "href": "https://api.somtoday.nl/rest/v1/leerlingen/1234" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE()", "type": "leerling.RLeerlingPrimer", "operations": [ "READ" ], "instances": [ "INSTANCE()" ] } ], "additionalObjects": {}, "UUID": "070dabd4-3449-4af3-8c38-788faac283a3", "leerlingnummer": 1234, "roepnaam": "", "voorvoegsel": "", "achternaam": "" } }, ... } ```

Schedule: GET /rest/v1/afspraken

Click to open Fetch the appointments from the schedule of the student. #### Parameters | Name | Type | Value | |---------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | | sort | Parameter | asc-id | | additional | Parameter | vak | | additional | Parameter | docentAfkortingen | | additional | Parameter | leerlingen | | begindatum | Parameter | yyyy-MM-dd | | einddatum | Parameter | yyyy-MM-dd | #### Returns ```json { "items": [ { "$type": "participatie.RAfspraak", "links": [ { "id": 8849104409, "rel": "self", "type": "participatie.RAfspraak", "href": "AFSPRAAK_URL" } ], "permissions": [ { "full": "participatie.RAfspraak:READ:INSTANCE(8849104409)", "type": "participatie.RAfspraak", "operations": ["READ"], "instances": ["INSTANCE(8849104409)"] } ], "additionalObjects": { "vak": { "$type": "onderwijsinrichting.RVak", "links": [ { "id": 126211284, "rel": "self", "type": "onderwijsinrichting.RVak", "href": "VAK_URL" } ], "permissions": [ { "full": "onderwijsinrichting.RVak:READ:INSTANCE(126211284)", "type": "onderwijsinrichting.RVak", "operations": ["READ"], "instances": ["INSTANCE(126211284)"] } ], "additionalObjects": {}, "afkorting": "wisB", "naam": "wiskunde B" }, "docentAfkortingen": "Stk", "leerlingen": { "$type": "LinkableWrapper", "items": [ { "$type": "leerling.RLeerlingPrimer", "links": [ { "id": 546308480, "rel": "self", "type": "leerling.RLeerlingPrimer", "href": "LEERLING_URL" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE(546308480)", "type": "leerling.RLeerlingPrimer", "operations": ["READ"], "instances": ["INSTANCE(546308480)"] } ], "additionalObjects": {}, "UUID": "UUID", "leerlingnummer": 119371, "roepnaam": "Christos", "achternaam": "Karapasias" } ] } }, "afspraakType": { "links": [ { "id": 144662674, "rel": "self", "type": "participatie.RAfspraakType", "href": "AFSPRAAK_TYPE_URL" } ], "permissions": [ { "full": "participatie.RAfspraakType:READ:INSTANCE(144662674)", "type": "participatie.RAfspraakType", "operations": ["READ"], "instances": ["INSTANCE(144662674)"] } ], "additionalObjects": {}, "naam": "Les", "omschrijving": "Les", "standaardKleur": -2394583, "categorie": "Rooster", "activiteit": "Verplicht", "percentageIIVO": 0, "presentieRegistratieDefault": true, "actief": true, "vestiging": { "$type": "instelling.RVestiging", "links": [ { "id": 126208855, "rel": "self", "type": "instelling.RVestiging", "href": "VESTIGING_URL" } ], "permissions": [ { "full": "instelling.RVestiging:READ:INSTANCE(126208855)", "type": "instelling.RVestiging", "operations": ["READ"], "instances": ["INSTANCE(126208855)"] } ], "additionalObjects": {}, "naam": "Fortes Lyceum" } }, "locatie": "217", "beginDatumTijd": "2020-05-04T11:15:00.000+02:00", "eindDatumTijd": "2020-05-04T12:00:00.000+02:00", "beginLesuur": 4, "eindLesuur": 4, "titel": "217 - A5wisB_2 - Stk", "omschrijving": "217 - A5wisB_2 - Stk", "presentieRegistratieVerplicht": true, "presentieRegistratieVerwerkt": false, "afspraakStatus": "ACTIEF", "vestiging": { "links": [ { "id": 126208855, "rel": "self", "type": "instelling.RVestiging", "href": "VESTIGING_URL" } ], "permissions": [ { "full": "instelling.RVestiging:READ:INSTANCE(126208855)", "type": "instelling.RVestiging", "operations": ["READ"], "instances": ["INSTANCE(126208855)"] } ], "additionalObjects": {}, "naam": "SCHOOL_NAAM" } } ] } ``` #### Example ```bash curl "$school_url/rest/v1/afspraken?sort=asc-id&additional=vak&additional=docentAfkortingen&additional=leerlingen&begindatum=2020-05-01&einddatum=2020-05-19" -H "Authorization: Bearer $token" -H "Accept: application/json" ```

Absence Reports: GET /rest/v1/absentiemeldingen

Click to open Fetches the absence reports of the user #### Parameters | Name | Type | Value | |----------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | | begindatumtijd | Parameter | yyyy-MM-dd | | einddatumtijd | Parameter | yyyy-MM-dd | #### Returns Array of absance reports ```json { "items": [ { "$type": "participatie.RAbsentieMelding", "links": [ { "id": 1234567890123, "rel": "self", "type": "participatie.RAbsentieMelding", "href": "{{api_url}}/rest/v1/waarnemingen/1234567890123" } ], "permissions": [], "additionalObjects": {}, "leerling": { "links": [ { "id": 1234567890, "rel": "self", "type": "leerling.RLeerlingPrimer", "href": "{{api_url}}/rest/v1/leerlingen/1234567890" } ], "permissions": [], "additionalObjects": {}, "UUID": "12abc34e-12a3-1a2b-a1b2-1a2b34cd5e67", "leerlingnummer": 100000, "roepnaam": "Name", "achternaam": "Name" }, "absentieReden": { "links": [ { "id": 1234567890, "rel": "self", "type": "participatie.RAbsentieRedenPrimer", "href": "{{api_url}}/rest/v1/absentieredenen/1234567890" } ], "permissions": [], "additionalObjects": {}, "absentieSoort": "Absent", "afkorting": "XC", "omschrijving": "Onbekend", "geoorloofd": false }, "datumTijdInvoer": "yyyy-MM-dd'T'HH:mm:ss.SSS+HH:mm", "beginDatumTijd": "yyyy-MM-dd'T'HH:mm:ss.SSS+HH:mm", "eindDatumTijd": "yyyy-MM-dd'T'HH:mm:ss.SSS+HH:mm", "beginLesuur": 3, "eindLesuur": 3, "afgehandeld": true, "eigenaar": { "links": [ { "id": 1234567890, "rel": "self", "type": "medewerker.RMedewerker", "href": "{{api_url}}/rest/v1/medewerkers/1234567890" } ], "permissions": [], "additionalObjects": {}, "UUID": "12abc34e-12a3-1a2b-a1b2-1a2b34cd5e67", "nummer": 100000, "afkorting": "HH", "achternaam": "Henk", "geslacht": "MAN", "voorletters": "H.H.", "roepnaam": "Hans" } } ] } ```

Study Guides: GET /rest/v1/studiewijzers

Click to open Fetches the study guides for the user #### Parameters | Name | Type | Value | |---------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | | additional | Parameter | leerlingen | | additional | Parameter | bijlagen | | additional | Parameter | externeMaterialen | | additional | Parameter | bijlageMappen | The additional parameters are optional GET parameters to include information in the result. `leerlingen` will only give back 1 result when queried by a student, but will fetch all students when queried by a teacher/school admin. #### Returns Depending on the additional parameters, some of the items in the result may not be present. Assuming all 4 are set: ```json { "items": [ { "$type": "studiewijzer.RStudiewijzer", "links": [ { "id": 3709468886305, "rel": "self", "type": "studiewijzer.RStudiewijzer", "href": "https://api.somtoday.nl/rest/v1/studiewijzers/3709468886305" } ], "permissions": [ { "full": "studiewijzer.RStudiewijzer:READ:INSTANCE(3709468886305)", "type": "studiewijzer.RStudiewijzer", "operations": [ "READ" ], "instances": [ "INSTANCE(3709468886305)" ] } ], "additionalObjects": { "bijlageMappen": { "$type": "LinkableWrapper", "items": [] }, "bijlagen": { "$type": "LinkableWrapper", "items": [] }, "leerlingen": { "$type": "LinkableWrapper", "items": [ { "$type": "leerling.RLeerlingPrimer", "links": [ { "id": 9496745174, "rel": "self", "type": "leerling.RLeerlingPrimer", "href": "https://api.somtoday.nl/rest/v1/leerlingen/9496745174" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE(9496745174)", "type": "leerling.RLeerlingPrimer", "operations": [ "READ" ], "instances": [ "INSTANCE(9496745174)" ] } ], "additionalObjects": {}, "UUID": "f8cf6f6c-c213-4526-8ba1-6a306cf724a4", "leerlingnummer": 123456, "roepnaam": "{{first_name}}", "achternaam": "{{last_name}}" } ] }, "externeMaterialen": { "$type": "LinkableWrapper", "items": [] } }, "uuid": "4d2188a0-03d8-4dca-9f51-0e54d3c353c6", "naam": "vwo5.schka", "vestiging": { "links": [ { "id": 9496567717, "rel": "self", "type": "instelling.RVestiging", "href": "https://api.somtoday.nl/rest/v1/vestigingen/9496567717" } ], "permissions": [ { "full": "instelling.RVestiging:READ:INSTANCE(9496567717)", "type": "instelling.RVestiging", "operations": [ "READ" ], "instances": [ "INSTANCE(9496567717)" ] } ], "additionalObjects": {}, "naam": "Stella Maris College Meerssen" }, "lesgroep": { "links": [ { "id": 3543707887108, "rel": "self", "type": "lesgroep.RLesgroep", "href": "https://api.somtoday.nl/rest/v1/lesgroepen/3543707887108" } ], "permissions": [ { "full": "lesgroep.RLesgroep:READ:INSTANCE(3543707887108)", "type": "lesgroep.RLesgroep", "operations": [ "READ" ], "instances": [ "INSTANCE(3543707887108)" ] } ], "additionalObjects": {}, "UUID": "d4afb5b8-fbf6-4bbd-ac73-cb50cc883392", "naam": "vwo5.schka", "schooljaar": { "$type": "onderwijsinrichting.RSchooljaar", "links": [ { "id": 40851957, "rel": "self", "type": "onderwijsinrichting.RSchooljaar", "href": "https://api.somtoday.nl/rest/v1/schooljaren/40851957" } ], "permissions": [ { "full": "onderwijsinrichting.RSchooljaar:READ:INSTANCE(40851957)", "type": "onderwijsinrichting.RSchooljaar", "operations": [ "READ" ], "instances": [ "INSTANCE(40851957)" ] } ], "additionalObjects": {}, "naam": "2021/2022", "vanafDatum": "2021-08-01", "totDatum": "2022-07-31", "isHuidig": true }, "vak": { "links": [ { "id": 9505018979, "rel": "self", "type": "onderwijsinrichting.RVak", "href": "https://api.somtoday.nl/rest/v1/vakken/9505018979" } ], "permissions": [ { "full": "onderwijsinrichting.RVak:READ:INSTANCE(9505018979)", "type": "onderwijsinrichting.RVak", "operations": [ "READ" ], "instances": [ "INSTANCE(9505018979)" ] } ], "additionalObjects": {}, "afkorting": "schk", "naam": "Scheikunde" }, "heeftStamgroep": false, "examendossierOndersteund": true, "vestiging": { "links": [ { "id": 9496567717, "rel": "self", "type": "instelling.RVestiging", "href": "https://api.somtoday.nl/rest/v1/vestigingen/9496567717" } ], "permissions": [ { "full": "instelling.RVestiging:READ:INSTANCE(9496567717)", "type": "instelling.RVestiging", "operations": [ "READ" ], "instances": [ "INSTANCE(9496567717)" ] } ], "additionalObjects": {}, "naam": "Stella Maris College Meerssen" } } } ... ] } ```

Subjects: GET /rest/v1/vakken

Click to open Fetches the subjects for the user #### Parameters | Name | Type | Value | |---------------|--------|-----------------------| | Authorization | Header | Bearer [access_token] | #### Returns ```json { "items": [ { "$type": "onderwijsinrichting.RVak", "links": [ { "id": 123456789, "rel": "self", "type": "onderwijsinrichting.RVak", "href": "https://api.somtoday.nl/rest/v1/vakken/123456789" } ], "permissions": [ { "full": "onderwijsinrichting.RVak:READ:INSTANCE(123456789)", "type": "onderwijsinrichting.RVak", "operations": [ "READ" ], "instances": [ "INSTANCE(123456789)" ] } ], "additionalObjects": {}, "afkorting": "", "naam": "" } ... ] } ```

Account: GET /rest/v1/account/ / GET /rest/v1/account/[id] / GET /rest/v1/account/me

Click to open Fetches information about the account that is connected with the Somtoday access token #### Parameters | Name | Type | Value | |---------------|-----------|-----------------------| | id | URL | [user-id] | | Authorization | Header | Bearer [access_token] | | additional | Parameter | restricties | #### Returns ```json { "items": [ { "$type": "auth.RAccount", "links": [ { "id": 1234567890, "rel": "self", "type": "auth.RAccount", "href": "https://api.somtoday.nl/rest/v1/account/1234567890" } ], "permissions": [ { "full": "auth.RAccount:READ:INSTANCE(1234567890)", "type": "auth.RAccount", "operations": [ "READ" ], "instances": [ "INSTANCE(1234567890)" ] } ], "additionalObjects": { "restricties": { "$type": "LinkableWrapper", "items": [ { "$type": "restricties.REloRestricties", "links": [], "permissions": [], "additionalObjects": {}, "vestigingsId": REDACTED, "leerlingId": REDACTED, "mobieleAppAan": true, "studiewijzerAan": true, "berichtenVerzendenAan": false, "leermiddelenAan": true, "adviezenTokenAan": true, "opmerkingRapportCijferTonenAan": true, "periodeGemiddeldeTonenResultaatAan": true, "rapportGemiddeldeTonenResultaatAan": true, "rapportCijferTonenResultaatAan": true, "toetssoortgemiddeldenAan": true, "seResultaatAan": true, "stamgroepLeerjaarAan": true, "emailWijzigenAan": false, "mobielWijzigenAan": false, "wachtwoordWijzigenAan": true, "absentiesBekijkenAan": true, "absentieConstateringBekijkenAan": true, "absentieMaatregelBekijkenAan": true, "absentieMeldingBekijkenAan": true, "berichtenBekijkenAan": true, "cijfersBekijkenAan": true, "huiswerkBekijkenAan": true, "nieuwsBekijkenAan": true, "pasfotoLeerlingTonenAan": true, "pasfotoMedewerkerTonenAan": false, "profielBekijkenAan": true, "roosterBekijkenAan": true, "roosterBeschikbaarIcalAan": true, "vakkenBekijkenAan": true, "lesurenVerbergenSettingAan": false } ] } }, "gebruikersnaam": "[REDACTED]", "accountPermissions": [], "persoon": { "$type": "leerling.RLeerlingPrimer", "links": [ { "id": "0123456789", "rel": "self", "type": "leerling.RLeerlingPrimer", "href": "https://api.somtoday.nl/rest/v1/leerlingen/0123456789" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE(1409824200)", "type": "leerling.RLeerlingPrimer", "operations": [ "READ" ], "instances": [ "INSTANCE(0123456789)" ] } ], "additionalObjects": {}, "UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "leerlingnummer": 100000, "roepnaam": "Name", "voorvoegsel": "Name", "achternaam": "Name" } } ] } ```

Schooljaren: GET /rest/v1/schooljaren / GET /rest/v1/schooljaren/[id]

Click to open Fetches information about a school year #### Parameters | Name | Type | Value | |---------------|--------|-----------------------| | id | URL | [id] | | id | URL | huidig | | Authorization | Header | Bearer [access_token] | When you want info about the current school year add /huidig to the url #### Returns ```json { "items": [ { "$type": "onderwijsinrichting.RSchooljaar", "links": [ { "id": 40851958, //this id is for everyone the same (in this case for year 2022/2023) "rel": "self", "type": "onderwijsinrichting.RSchooljaar", "href": "https://api.somtoday.nl/rest/v1/schooljaren/40851958" } ], "permissions": [ { "full": "onderwijsinrichting.RSchooljaar:READ:INSTANCE(40851958)", "type": "onderwijsinrichting.RSchooljaar", "operations": [ "READ" ], "instances": [ "INSTANCE(40851958)" ] } ], "additionalObjects": {}, "naam": "2022/2023", "vanafDatum": "2022-08-01", "totDatum": "2023-07-31", "isHuidig": true }, ... ] } ```

Vakkeuzes: GET /rest/v1/vakkeuzes

Click to open Fetches all the subjects you are currently enrolled in. #### Parameters | Name | Type | Value | |---------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | | additional | Parameter | vaknormering | | additional | Parameter | actiefOpPeildatum | #### Returns ```json { "items": [ { "$type": "onderwijsinrichting.RVakkeuze", "links": [ { "id": xxxxxxxxxx, "rel": "self", "type": "onderwijsinrichting.RVakkeuze", "href": "https://api.somtoday.nl/rest/v1/vakkeuzes/xxxxxxxxxx" } ], "permissions": [ { "full": "onderwijsinrichting.RVakkeuze:READ:INSTANCE(xxxxxxxxxx)", "type": "onderwijsinrichting.RVakkeuze", "operations": [ "READ" ], "instances": [ "INSTANCE(xxxxxxxxxx)" ] } ], "additionalObjects": { "vaknormering": { "$type": "onderwijsinrichting.RVakNormering", "vakId": yyyyyyyyyy, "toetsnormering1": "Standaard", "toetsnormering2": "Alternatief" } }, "vak": { "links": [ { "id": yyyyyyyyyy, "rel": "self", "type": "onderwijsinrichting.RVak", "href": "https://api.somtoday.nl/rest/v1/vakken/yyyyyyyyyy" } ], "permissions": [ { "full": "onderwijsinrichting.RVak:READ:INSTANCE(yyyyyyyyyy)", "type": "onderwijsinrichting.RVak", "operations": [ "READ" ], "instances": [ "INSTANCE(yyyyyyyyyy)" ] } ], "additionalObjects": {}, "afkorting": "ne", "naam": "Nederlandse taal" } }, ... ] } ```

Waarnemingen: GET /rest/v1/waarnemingen

Click to open Fetches all the waarnemingen currently tied to your account, filter them by date, isGeoorloofd and/or waarnemingSoort. #### Parameters | Name | Type | Value | |----------------------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | | waarnemingSoort (optional) | Parameter | Afwezig/aanwezig | | isGeoorloofd (optional) | Parameter | true/false | You can, if you want, provide dates to filter the results. If you don't provide any dates, it will return all the results. You can either provide a date range or a single date. If you provide a single date, it will return all the results from that date. If you provide a date range, it will return all the results inbetween those dates. | Date types | Type | Value | |-----------------|-----------|-------------| | begintNaOfOp | Parameter | yyyy-MM-dd | | OR | | beginDatumTijd | Parameter | yyyy-MM-dd | | eindDatumTijd | Parameter | yyyy-MM-dd | #### Returns ```json { "items": [ { "$type": "participatie.RWaarneming", "links": [ { "id": 1234567891234, "rel": "self", "type": "participatie.RWaarneming", "href": "https://api.somtoday.nl/rest/v1/waarnemingen/1234567891234" } ], "permissions": [ { "full": "participatie.RWaarneming:READ:INSTANCE(1234567891234)", "type": "participatie.RWaarneming", "operations": [ "READ" ], "instances": [ "INSTANCE(1234567891234)" ] } ], "additionalObjects": {}, "beginDatumTijd": "2023-01-09T11:05:00.000+01:00", "eindDatumTijd": "2023-01-09T11:55:00.000+01:00", "beginLesuur": 4, "eindLesuur": 4, "waarnemingSoort": "Aanwezig", "leerling": { "links": [ { "id": 1234567890, "rel": "self", "type": "leerling.RLeerlingPrimer", "href": "https://api.somtoday.nl/rest/v1/leerlingen/1234567890" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE(1234567890)", "type": "leerling.RLeerlingPrimer", "operations": [ "READ" ], "instances": [ "INSTANCE(1234567890)" ] } ], "additionalObjects": {}, "UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "leerlingnummer": 100000, "roepnaam": "Name", "voorvoegsel": "Name", "achternaam": "Name" }, "afspraak": { "links": [ { "id": 12345678901345, "rel": "self", "type": "participatie.RAfspraakPrimer", "href": "https://api.somtoday.nl/rest/v1/afspraken/12345678901345" } ], "permissions": [ { "full": "participatie.RAfspraak:READ:INSTANCE(12345678901345)", "type": "participatie.RAfspraak", "operations": [ "READ" ], "instances": [ "INSTANCE(12345678901345)" ] } ], "additionalObjects": {}, "afspraakType": { "links": [ { "id": 1234567890, "rel": "self", "type": "participatie.RAfspraakType", "href": "https://api.somtoday.nl/rest/v1/afspraaktype/1234567890" } ], "permissions": [ { "full": "participatie.RAfspraakType:READ:INSTANCE(1234567890)", "type": "participatie.RAfspraakType", "operations": [ "READ" ], "instances": [ "INSTANCE(1234567890)" ] } ], "additionalObjects": {}, "naam": "LES", "omschrijving": "LES", "standaardKleur": -16448251, "categorie": "Rooster", "activiteit": "Verplicht", "percentageIIVO": 100, "presentieRegistratieDefault": true, "actief": true, "vestiging": { "$type": "instelling.RVestiging", "links": [ { "id": 1234567890, "rel": "self", "type": "instelling.RVestiging", "href": "https://api.somtoday.nl/rest/v1/vestigingen/1234567890" } ], "permissions": [ { "full": "instelling.RVestiging:READ:INSTANCE(1234567890)", "type": "instelling.RVestiging", "operations": [ "READ" ], "instances": [ "INSTANCE(1234567890)" ] } ], "additionalObjects": {}, "naam": "De super coole school", } }, "locatie": "lokaal naam", "beginDatumTijd": "2023-01-09T11:05:00.000+01:00", "eindDatumTijd": "2023-01-09T11:55:00.000+01:00", "beginLesuur": 4, "eindLesuur": 4, "titel": "titel" }, "afgehandeld": true, "invoerDatum": "2023-01-09T11:09:08.000+01:00", "laatstGewijzigdDatum": "2023-01-09T11:09:08.000+01:00", "herkomst": "Medewerker", "ingevoerdDoor": { "links": [ { "id": 1234567890123, "rel": "self", "type": "medewerker.RMedewerkerPrimer", "href": "https://api.somtoday.nl/rest/v1/medewerkers/1234567890123" } ], "permissions": [], "additionalObjects": {}, "UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "nummer": 12345678, "afkorting": "afkorting", "achternaam": "name", "geslacht": "VROUW/MAN", "voorletters": "voorletter(s)", "roepnaam": "roepnaam" }, "laatstGewijzigdDoor": { "links": [ { "id": 1234567890123, "rel": "self", "type": "medewerker.RMedewerkerPrimer", "href": "https://api.somtoday.nl/rest/v1/medewerkers/1234567890123" } ], "permissions": [], "additionalObjects": {}, "UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "nummer": 12345678, "afkorting": "afkorting", "achternaam": "name", "geslacht": "VROUW/MAN", "voorletters": "voorletter(s)", "roepnaam": "roepnaam" } }, ... ] } ```

Schoolgegevens: GET /rest/v1/[id]/schoolgegevens

Click to open Fetches info about the school, including your mentor. #### Parameters | Name | Type | Value | |---------------|--------|-----------------------| | id | URL | [user id] | | Authorization | Header | Bearer [access_token] | #### Returns ```json { "$type": "leerling.RLeerlingSchoolgegevens", "instellingsnaam": "REDACTED", "vestigingsnaam": "REDACTED", "plaats": "REDACTED", "straat": "REDACTED", "postcode": "REDACTED", "telefoonnummer": "REDACTED", "email": "REDACTED", "leerjaar": 99, "mentoren": [ "REDACTED" ] } ```

Vakanties: GET /rest/v1/vakanties/leerling/[id]

Click to open Fetches info about the school, including your mentor. #### Parameters | Name | Type | Value | |---------------|--------|-----------------------| | id | URL | [user id] | | Authorization | Header | Bearer [access_token] | #### Returns ```json { "items": [ { "$type": "participatie.RVakantie", "links": [ { "id": 123456789, "rel": "self", "type": "participatie.RVakantie", "href": "https://api.somtoday.nl/rest/v1/vakanties/123456789" } ], "permissions": [ { "full": "participatie.RVakantie:READ:INSTANCE(123456789)", "type": "participatie.RVakantie", "operations": [ "READ" ], "instances": [ "INSTANCE(123456789)" ] } ], "additionalObjects": {}, "naam": "Herfstvakantie", "beginDatum": "2023-10-16T00:00:00.000+02:00", "eindDatum": "2023-10-20T00:00:00.000+02:00" }, ... ] } ```

Studiemateriaal: GET /rest/v1/vakken/studiemateriaal/[id] & GET rest/v1/vakken/studiemateriaal/[id]/vak/[uuid] & /rest/v1/studiemateriaal/algemeen/[id]

Click to open Fetches all studiemateriaal. (I.E. Annual supplements, online textbooks, etc.) First, make a request to `GET /rest/v1/vakken/studiemateriaal/[id]`. And then to `/rest/v1/vakken/studiemateriaal/[id]/vak/[uuid]` with the UUID of subject which studiemateriaal you want to fetch. #### Parameters | Name | Type | Value | |---------------|--------|-----------------------| | id | URL | [user id] | | Authorization | Header | Bearer [access_token] | #### Returns `GET /rest/v1/vakken/studiemateriaal/[id]` returns: ```json { "items": [ { "$type": "onderwijsinrichting.RVak", "links": [ { "id": 123456789, "rel": "self", "type": "onderwijsinrichting.RVak", "href": "https://api.somtoday.nl/rest/v1/vakken/123456789" } ], "permissions": [ { "full": "onderwijsinrichting.RVak:READ:INSTANCE(123456789)", "type": "onderwijsinrichting.RVak", "operations": [ "READ" ], "instances": [ "INSTANCE(123456789)" ] } ], "additionalObjects": {}, "afkorting": "ne", "naam": "Nederlandse taal", "UUID": "REDACTED" }, ... ] } ``` `GET /rest/v1/vakken/studiemateriaal/[id]/vak/[uuid]` returns: ```json { "$type": "studiewijzer.RStudieMateriaal", "studiewijzer": { "links": [ { "id": 123456789, "rel": "self", "type": "studiewijzer.RStudiewijzer", "href": "https://api.somtoday.nl/rest/v1/studiewijzers/123456789" } ], "permissions": [ { "full": "studiewijzer.RStudiewijzer:READ:INSTANCE(123456789)", "type": "studiewijzer.RStudiewijzer", "operations": [ "READ" ], "instances": [ "INSTANCE(123456789)" ] } ], "additionalObjects": {}, "uuid": "Redacted", "naam": "Nederland", "vestiging": { "links": [ { "id": 123456789, "rel": "self", "type": "instelling.RVestiging", "href": "https://api.somtoday.nl/rest/v1/vestigingen/123456789" } ], "permissions": [ { "full": "instelling.RVestiging:READ:INSTANCE(123456789)", "type": "instelling.RVestiging", "operations": [ "READ" ], "instances": [ "INSTANCE(123456789)" ] } ], "additionalObjects": {}, "naam": "REDACTED", "uuid": "REDACTED" }, "lesgroep": { "links": [ { "id": 123456789, "rel": "self", "type": "lesgroep.RLesgroep", "href": "https://api.somtoday.nl/rest/v1/lesgroepen/123456789" } ], "permissions": [ { "full": "lesgroep.RLesgroep:READ:INSTANCE(123456789)", "type": "lesgroep.RLesgroep", "operations": [ "READ" ], "instances": [ "INSTANCE(123456789)" ] } ], "additionalObjects": {}, "UUID": "REDACTED", "naam": "REDACTED", "omschrijving": "REDACTED", "schooljaar": { "$type": "onderwijsinrichting.RSchooljaar", "links": [ { "id": 12345689, "rel": "self", "type": "onderwijsinrichting.RSchooljaar", "href": "https://api.somtoday.nl/rest/v1/schooljaren/12345689" } ], "permissions": [ { "full": "onderwijsinrichting.RSchooljaar:READ:INSTANCE(12345689)", "type": "onderwijsinrichting.RSchooljaar", "operations": [ "READ" ], "instances": [ "INSTANCE(12345689)" ] } ], "additionalObjects": {}, "naam": "2023/2024", "vanafDatum": "2023-08-01", "totDatum": "2024-07-31", "isHuidig": true }, "vak": { "links": [ { "id": 12345689, "rel": "self", "type": "onderwijsinrichting.RVak", "href": "https://api.somtoday.nl/rest/v1/vakken/12345689" } ], "permissions": [ { "full": "onderwijsinrichting.RVak:READ:INSTANCE(12345689)", "type": "onderwijsinrichting.RVak", "operations": [ "READ" ], "instances": [ "INSTANCE(12345689)" ] } ], "additionalObjects": {}, "afkorting": "ne", "naam": "Nederlandse taal", "UUID": "REDACTED" }, "heeftStamgroep": false, "examendossierOndersteund": false, "vestiging": { "links": [ { "id": 12345689, "rel": "self", "type": "instelling.RVestiging", "href": "https://api.somtoday.nl/rest/v1/vestigingen/12345689" } ], "permissions": [ { "full": "instelling.RVestiging:READ:INSTANCE(12345689)", "type": "instelling.RVestiging", "operations": [ "READ" ], "instances": [ "INSTANCE(12345689)" ] } ], "additionalObjects": {}, "naam": "REDACTED", "uuid": "REDACTED" } } }, ... } ``` `GET /rest/v1/studiemateriaal/algemeen/[id]` returns: ```json { "items": [ { "$type": "leermiddel.REduRoutePortalUserProduct", "links": [ { "id": 123456789, "rel": "self", "type": "leermiddel.REduRoutePortalUserProduct", "href": "https://api.somtoday.nl/rest/v1/edurouteportaluserproduct/123456789" } ], "permissions": [ { "full": "leermiddel.REduRoutePortalUserProduct:READ:INSTANCE(123456789)", "type": "leermiddel.REduRoutePortalUserProduct", "operations": ["READ"], "instances": ["INSTANCE(123456789)"] } ], "additionalObjects": {}, "leerling": { "$type": "leerling.RLeerlingPrimer", "links": [ { "id": 9496745174, "rel": "self", "type": "leerling.RLeerlingPrimer", "href": "https://api.somtoday.nl/rest/v1/leerlingen/9496745174" } ], "permissions": [ { "full": "leerling.RLeerlingPrimer:READ:INSTANCE(9496745174)", "type": "leerling.RLeerlingPrimer", "operations": ["READ"], "instances": ["INSTANCE(9496745174)"] } ], "additionalObjects": {}, "UUID": "f8cf6f6c-c213-4526-8ba1-6a306cf724a4", "leerlingnummer": 123456, "roepnaam": "{{first_name}}", "achternaam": "{{last_name}}" }, "product": { "$type": "leermiddel.REduRoutePortalProduct", "links": [ { "id": 1234567890123, "rel": "self", "type": "leermiddel.REduRoutePortalProduct", "href": "https://api.somtoday.nl/rest/v1/edurouteportalproduct/1234567890123" } ], "permissions": [ { "full": "leermiddel.REduRoutePortalProduct:READ:INSTANCE(1234567890123)", "type": "leermiddel.REduRoutePortalProduct", "operations": ["READ"], "instances": ["INSTANCE(1234567890123)"] } ], "additionalObjects": {}, "title": "Chemie Overal ed 5.0 vwo 5 FLEX boek + online", "url": "https://toegang.noordhoff.nl/1234567890123", "UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "methodeInformatie": { "$type": "leermiddel.RMethodeInformatie", "links": [ { "id": 1234567890123, "rel": "self", "type": "leermiddel.RMethodeInformatie", "href": "https://api.somtoday.nl/rest/v1/methodeinformatie/1234567890123" } ], "permissions": [ { "full": "leermiddel.RMethodeInformatie:READ:INSTANCE(1234567890123)", "type": "leermiddel.RMethodeInformatie", "operations": ["READ"], "instances": ["INSTANCE(1234567890123)"] } ], "additionalObjects": {}, "UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "dashboardMethodeNaam": "Chemie overal", "methode": "Chemie overal", "uitgever": "Noordhoff" } }, "UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }, ... ] } ```

ICalendar: GET /rest/v1/icalendar

Click to open Fetches the url to the icalendar stream. #### Parameters | Name | Type | Value | |---------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | #### Returns ```json { "links": [], "permissions": [], "additionalObjects": {}, "leerlingICalendarLink": "https://api.somtoday.nl/rest/v1/icalendar/stream/REDACTED" } ```

ICalendar: DELETE /rest/v1/icalendar

Click to open Deletes the currently active icalendar stream #### Parameters | Name | Type | Value | |---------------|-----------|-----------------------| | Authorization | Header | Bearer [access_token] | #### Returns NONE

Undocumented: