Documentatie Opleidingsplanning Perspectief
Deze documentatie bevat een kort overzicht van de acties die je kunt uitvoeren met de webservice. Om te beginnen, zorg dat je het volgende klaar hebt:
- De invoerdata in de vorm van het afgesproken format (Excel bestand).
- De API key om toegang te krijgen tot de webservice op
camas.cahido.nl. - Een tool om webrequests te maken, zoals
curlof Postman. Uiteraard is het ook mogelijk om een eigen script te schrijven in bijvoorbeeld Python om het stappenplan te automatiseren.
Een meer gedetailleerde uitleg van de API is te vinden in de interactieve OpenAPI specificatie.
Je kan hier ook direct requests maken en de API uitproberen door de API token in te vullen bij de Authorize knop.
1. De data
Let bij het invullen van de data op de volgende belangrijke punten:
- Zorg ervoor dat data (met name jaartallen!) kloppen met het bereik van de planningsperiode. Let hier met name op bij jaarlijks terugkerende evenementen zoals vakanties.
- Zorg ervoor dat sleutels altijd volledig ingevuld zijn. Dit gaat dan bijvoorbeeld om (afstanden tussen) adressen, labels voor mogelijke trainers / locaties, personeelsnummers in agendas etc. In het bijzonder gaat dit om de volgende kolommen:
trainingin het tabbladsessiesmoet overeenstemmen met kolom A indeelnemers.voorkeursdagin het tabbladsessiesmag een of meerdere vanma/di/wo/do/vrbevatten, gescheiden door een ampersand (&).deelnemersgroepin het tabbladsessiesmoet overeenstemmen met kolom A en rij 1 in tabbladoverlap.mogelijke_locatiesin het tabbladsessiesmoet overeenstemmen metlabelsin tabbladlocaties. Dit geeft aan welke labels een locatie allemaal moet hebben (dusmet_beamer & met_whiteboardbetekent dat alleen locaties met beide labels geschikt zijn voor deze training).mogelijke_trainersin het tabbladtrainersmoet overeenstemmen metlabelsin het tabbladtrainers. Wederom geldt hier: alleen trainers met alle genoemde labels zijn geschikt voor deze training.vestigingin het tabbladvestigingenmoet overeenstemmen met rij 1 vandeelnemers.- Alle waardes in kolom
adresin het tabbladvestigingenmoeten ook bestaan in kolom A en rij 1 vanreistijd. personeelsnummerin het tabbladtrainersmoet overeenstemmen met kolompersoneelsnummerintrainer-vrij.- Alle waardes in kolom
postcodein tabbladtrainersmoeten ook bestaan in kolom A en rij 1 vanreistijd. locatiein het tabbladlocatiesmoet overeenstemmen met kolomlocatiein tabbladlocatie-vrij.
2. Overzicht
Je kan een overzicht van de taken die in het verleden gestart zijn opvragen met het volgende commando:
curl -X GET -L https://camas.cahido.nl/ -H "Authorization: Bearer <API Token>"
dus bijvoorbeeld
curl -X GET -L https://camas.cahido.nl/ -H "Authorization: Bearer abcdefghijklmnopqrstuvwxyz"
Met het antwoord
{
"tasks": [
{
"id": "abcdef12-1234-5678-abcd-abcdef123456",
"started": "2025-09-24T13:40:10.844033",
"status": "PENDING"
},
...
],
"msg": "List of tasks"
}
waarbij started de starttijd is (met tijdzone UTC, dus dit zou een of twee uur kunnen
verschillen met de lokale tijd) en status de huidige status van de taak. De mogelijke statussen
zijn:
PENDING: De taak staat in de wachtrij en zal binnenkort worden uitgevoerd.RUNNING: De taak wordt momenteel uitgevoerd.SUCCESS: De taak is succesvol voltooid.FAILURE: De taak is mislukt.EXPIRED: De taak is te oud en uit onze omgeving verwijderd.
3. Start een solve
Je start een solve met
curl -X POST -L https://camas.cahido.nl/ -H "Authorization: Bearer <API Token>" -F "file=@<Pad naar bestand>"
Bijvoorbeeld, met API token abcdefghijklmnopqrstuvwxyz en een bestand C:/pad/naar/dataset.xlsx, voer je het volgende commando uit:
curl -X POST -L https://camas.cahido.nl/ -H "Authorization: Bearer abcdefghijklmnopqrstuvwxyz" -F "file=@C:/pad/naar/dataset.xlsx"
Dit commando uploadt het Excel bestand naar de webservice en start het planningsproces.
3a. De solve wordt gestart
Je krijgt hieruit 200 OK response met een JSON object met de volgende waardes:
{
"task_id": "abcdef12-1234-5678-abcd-abcdef123456"
}
De taak ID is een unieke identifier voor deze specifieke solve. Bewaar deze goed, want je hebt hem nodig om de status van de taak te controleren en het resultaat op te halen.
3b. Er draait al een solve
Als er al een lopende taak is, dan krijg je een 429 Too Many Requests response met de volgende inhoud:
{
"detail": "Too many active tasks. Please wait for existing tasks to complete."
}
In dat geval zou je uit het overzicht (zie stap 1) de meest recente taak kunnen opzoeken, en
hiervan de task_id gebruiken om de status te volgen en later het resultaat op te halen.
4. Volg de status van een taak
Volg de status van een taak met het volgende commando:
curl -X GET -L https://camas.cahido.nl/status/<task_id> -H "Authorization: Bearer <API Token>"
Waarbij <task_id> de taak ID is die je in de vorige stap hebt ontvangen. Bijvoorbeeld:
curl -X GET -L https://camas.cahido.nl/status/abcdef12-1234-5678-abcd-abcdef123456 -H "Authorization: Bearer abcdefghijklmnopqrstuvwxyz"
Je krijgt een 200 OK response met een JSON object met de volgende waardes:
{
"status": "RUNNING",
"msg": "Task is currently being processed."
}
De mogelijke statussen zijn hetzelfde als hierboven beschreven. Blijf dit commando herhalen
totdat de status SUCCESS of FAILURE is (EXPIRED zal in principe nooit voorkomen, tenzij
je een verkeerde task_id gebruikt, maar is weliswaar ook goed om te checken).
5. Haal de logs op
Zodra de status SUCCESS of FAILURE is, kan je de logs ophalen van de taak.
Dit doe je door het volgende commando uit te voeren.
curl -X GET -L https://camas.cahido.nl/logs/<task_id> -H "Authorization: Bearer <API Token>"
dus bijvoorbeeld
curl -X GET -L https://camas.cahido.nl/logs/abcdef12-1234-5678-abcd-abcdef123456 -H "Authorization: Bearer abcdefghijklmnopqrstuvwxyz"
en je krijgt een antwoord
{
"messages": [
"[WARNING] 2025-09-24 12:51:45,601 - Geen beschikbaarheid voor een van de locaties",
...
]
}
6. Haal het resultaat op
Zodra de status SUCCESS is kan je van een taak het resultaat ophalen (ook in het
overeengekomen format). Als de status SUCCESS is, kan je het resultaat ophalen met
curl -f -X GET -L https://camas.cahido.nl/result/<task_id> \
-H "Authorization: Bearer <API Token>" \
-o resultaat.zip
of met een ander pad als bestandsnaam. Dus bijvoorbeeld
curl -f -X GET -L https://camas.cahido.nl/result/abcdef12-1234-5678-abcd-abcdef123456 \
-H "Authorization: Bearer abcdefghijklmnopqrstuvwxyz" \
-o resultaat.zip
Merk de -f optie op, die zorgt dat curl een niet succesvolle response (zoals 404 Not Found)
als een fout behandelt, en in dat geval dus geen bestand download. Je krijgt een 200 OK
response die opgeslagen wordt in het opgegeven pad.
7. Een taak annuleren
Je kunt een (lopende) taak annuleren. Hiermee zal een taak gestopt worden, maar niet uit het
overzicht verwijderd worden. Deze krijgt dan de status FAILURE. Voer hiervoor het volgende
commando uit:
curl -X POST -L https://camas.cahido.nl/cancel/<task_id> -H "Authorization: Bearer <API Token>"
dus bijvoorbeeld
curl -X POST -L https://camas.cahido.nl/cancel/abcdef12-1234-5678-abcd-abcdef123456 -H "Authorization: Bearer abcdefghijklmnopqrstuvwxyz"
Je krijgt een antwoord van de vorm
{
"task_id": "abcdef12-1234-5678-abcd-abcdef123456",
"msg": "Task cancelled"
}
8. Een taak verwijderen
Je kunt een taak verwijderen uit het overzicht. Dit zal de taak eerst annuleren als deze nog loopt, en daarna verwijderen uit het overzicht. Voer hiervoor het volgende commando uit:
curl -X DELETE -L https://camas.cahido.nl/delete/<task_id> -H "Authorization: Bearer <API Token>"
dus bijvoorbeeld
curl -X DELETE -L https://camas.cahido.nl/delete/abcdef12-1234-5678-abcd-abcdef123456 -H "Authorization abcdefghijklmnopqrstuvwxyz"
Je krijgt een antwoord van de vorm
{
"task_id": "abcdef12-1234-5678-abcd-abcdef123456",
"msg": "Task deleted"
}