OciServe-planning: agenda-abonnement (iCalendar-feed) voor mijn inschrijvingen #2427

Closed
opened 2026-10-14 18:40:45 +00:00 by brenno · 2 comments
Owner

Wat wil je bereiken

Een cursist zet zijn ingeplande sessies in zijn eigen agenda (telefoon, Outlook, Thunderbird) met een abonnement dat zichzelf bijwerkt bij wijzigingen en annuleringen. De server heeft de feed (OciServe #595); geen client biedt hem aan.

Wat mist er nu (origin/main 5802e9360)

ociserve_bookings_view.dart toont de inschrijvingen en boekingen (bevestigen, afwijzen, annuleren), maar roept me/calendar-subscription en me/calendar.ics nergens aan.

Contract (OciServe 560f1ba)

  • POST /organizations/{org}/me/calendar-subscription (Idempotency-Key verplicht) → 201 {url, expires_at}. De URL is relatief aan de API-basis en bevat een bearer-token in de querystring; alleen de hash wordt bewaard, de URL komt één keer terug. Opnieuw aanroepen roteert het token (de oude URL werkt dan niet meer).
  • DELETE …/me/calendar-subscription → 204, trekt de feed in.
  • GET …/me/calendar.ics?token=… → RFC 5545-feed van de boekingen; geannuleerde boekingen staan er als geannuleerd in. Geen sessie nodig: het token ís de inloggegevens.
  • De feed verloopt (expires_at); een client moet verlenging aanbieden voordat een abonnement stilletjes ophoudt.

Gevraagd

  • Bij Mijn inschrijvingen een kaart "Agenda koppelen": maak het abonnement aan, toon de URL eenmalig met een Kopieer-knop (hier is kopiëren nodig om het in een agenda-app te plakken; zeg erbij dat de link toegang geeft tot de afspraken) en een knop om te verversen (roteren) of in te trekken.
  • Toon de verloopdatum en een herinnering vóór verloop.
  • De URL staat nergens in logs, diagnose, voorbeelden of schermafbeeldingen; de gateway scrubt token= in elke logregel.
  • Zonder planningsmeldingen aan de organisatiekant (standaard uit, zie brenno/Keiko#397) blijft de feed wel werken; de mail is een aparte stroom.

Toets op de kernwaarden

Alleen actief voor wie bewust met een OciServe is verbonden (ongewijzigd); zonder server blijft OciDeck volledig lokaal werken. Geen telemetrie, geen wijziging van het bestandsformaat, geen nieuwe verplichte afhankelijkheid. De route staat al in de gepinde speckopie (test/fixtures/ociserve_openapi.yaml, OciServe 45d9a87), dus de pin hoeft niet omhoog; registreer de nieuwe aanroepen wel in test/ociserve_api_drift_test.dart (de contractpoort, #2042).

Acceptatiecriteria

  • Aanmaken, verversen en intrekken werken; na verversen is de oude URL ongeldig (proef).
  • Het token komt in geen logregel en geen crashrapport (test op de logstroom).
  • Verloop wordt getoond en verlengen kan.

Acceptatiecriteria (algemeen)

  • Nieuwe aanroepen staan in de contractpoort met de velden die OciDeck leest.
  • Nieuwe l10n.d('…')-teksten via make add-l10n (31 talen).
  • make check groen; docs/USER_GUIDE.md, docs/SOURCE_MAP.md en CHANGELOG.md bijgewerkt.

Gerelateerd

Keiko-schakelaar voor de mails: brenno/Keiko#397. Overzicht: brenno/OciServe#659.


Keten-audit van 2026-10-14, getoetst aan OciServe 560f1ba, Keiko 093f679 en OciDeck 5802e9360. Overzicht: brenno/OciServe#659.

## Wat wil je bereiken Een cursist zet zijn ingeplande sessies in zijn eigen agenda (telefoon, Outlook, Thunderbird) met een abonnement dat zichzelf bijwerkt bij wijzigingen en annuleringen. De server heeft de feed (OciServe #595); geen client biedt hem aan. ## Wat mist er nu (origin/main `5802e9360`) `ociserve_bookings_view.dart` toont de inschrijvingen en boekingen (bevestigen, afwijzen, annuleren), maar roept `me/calendar-subscription` en `me/calendar.ics` nergens aan. ## Contract (OciServe `560f1ba`) - `POST /organizations/{org}/me/calendar-subscription` (`Idempotency-Key` verplicht) → 201 `{url, expires_at}`. De URL is relatief aan de API-basis en bevat een **bearer-token in de querystring**; alleen de hash wordt bewaard, de URL komt **één keer** terug. Opnieuw aanroepen **roteert** het token (de oude URL werkt dan niet meer). - `DELETE …/me/calendar-subscription` → 204, trekt de feed in. - `GET …/me/calendar.ics?token=…` → RFC 5545-feed van de boekingen; geannuleerde boekingen staan er als geannuleerd in. Geen sessie nodig: het token ís de inloggegevens. - De feed verloopt (`expires_at`); een client moet verlenging aanbieden voordat een abonnement stilletjes ophoudt. ## Gevraagd - Bij **Mijn inschrijvingen** een kaart "Agenda koppelen": maak het abonnement aan, toon de URL eenmalig met een **Kopieer**-knop (hier is kopiëren nodig om het in een agenda-app te plakken; zeg erbij dat de link toegang geeft tot de afspraken) en een knop om te verversen (roteren) of in te trekken. - Toon de verloopdatum en een herinnering vóór verloop. - De URL staat nergens in logs, diagnose, voorbeelden of schermafbeeldingen; de gateway scrubt `token=` in elke logregel. - Zonder planningsmeldingen aan de organisatiekant (standaard uit, zie brenno/Keiko#397) blijft de feed wel werken; de mail is een aparte stroom. ## Toets op de kernwaarden Alleen actief voor wie bewust met een OciServe is verbonden (ongewijzigd); zonder server blijft OciDeck volledig lokaal werken. Geen telemetrie, geen wijziging van het bestandsformaat, geen nieuwe verplichte afhankelijkheid. De route staat al in de gepinde speckopie (`test/fixtures/ociserve_openapi.yaml`, OciServe `45d9a87`), dus de pin hoeft niet omhoog; registreer de nieuwe aanroepen wel in `test/ociserve_api_drift_test.dart` (de contractpoort, #2042). ## Acceptatiecriteria - [ ] Aanmaken, verversen en intrekken werken; na verversen is de oude URL ongeldig (proef). - [ ] Het token komt in geen logregel en geen crashrapport (test op de logstroom). - [ ] Verloop wordt getoond en verlengen kan. ## Acceptatiecriteria (algemeen) - [ ] Nieuwe aanroepen staan in de contractpoort met de velden die OciDeck leest. - [ ] Nieuwe `l10n.d('…')`-teksten via `make add-l10n` (31 talen). - [ ] `make check` groen; `docs/USER_GUIDE.md`, `docs/SOURCE_MAP.md` en `CHANGELOG.md` bijgewerkt. ## Gerelateerd Keiko-schakelaar voor de mails: brenno/Keiko#397. Overzicht: brenno/OciServe#659. --- _Keten-audit van 2026-10-14, getoetst aan OciServe `560f1ba`, Keiko `093f679` en OciDeck `5802e9360`. Overzicht: brenno/OciServe#659._
Author
Owner

Gemerged in #2444 (merge-commit 5446218c72). Na het samenvoegen met main is de per-bestand-dekking van de nieuwe provider-, dialoog- en bewijslagen met tests aangevuld; make check, check-secrets en sast zijn groen. #2424 was al gedekt door me/exam-results.

Gemerged in https://pawprint.vigilis.online/LibreKAT/Ocideck/pulls/2444 (merge-commit 5446218c72). Na het samenvoegen met main is de per-bestand-dekking van de nieuwe provider-, dialoog- en bewijslagen met tests aangevuld; make check, check-secrets en sast zijn groen. #2424 was al gedekt door me/exam-results.
Author
Owner

Nalevering in #d191e3d0d5 (PR #2447, commit 7efde5aaaf). Een agenda-URL die de OciServe-host verlaat wordt geweigerd; de foutmelding bevat het token niet. Niet live bewezen: dat een ververste URL de vorige op een echte OciServe ongeldig maakt.

Nalevering in #d191e3d0d569ba220ca640f5f8e08ce58fa99686 (PR https://pawprint.vigilis.online/LibreKAT/Ocideck/pulls/2447, commit 7efde5aaaf9f62622e16b282d1bfd0fd55b4fda4). Een agenda-URL die de OciServe-host verlaat wordt geweigerd; de foutmelding bevat het token niet. Niet live bewezen: dat een ververste URL de vorige op een echte OciServe ongeldig maakt.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2427
No description provided.