Developers
The Today API
JSON under /api/v1, calendars under /ics/, and three topics on OpenVibe.Events. A person is the session cookie, or a Network user token as a Bearer.
Read
GET /api/v1/events?channel=&from=&to=&limit=- Public events, soonest first (at most 100; cached 60 s).
GET /api/v1/events/:id- One event. A cancelled one answers with
status: "cancelled"; a followers-only one is 404 unless it is yours. GET /api/v1/me/agenda?days=14- Your events, reminded events and followed channels’ events (up to 60 days).
GET /api/v1/me/brief- Today’s brief: sections of cited lines.
Write (signed in)
POST /api/v1/events{ kind, title, starts_at, ends_at?, tz, description?, visibility? }.Idempotency-Keyis honoured; at most 60 future events per person.PATCH /api/v1/events/:id- Change the title, times, zone, description or visibility (the calendar sequence goes up).
DELETE /api/v1/events/:id- Cancel it (again is fine).
POST /api/v1/events/:id/remind{ minutes_before: 0–1440 };DELETEremoves it.
Calendar feeds
GET /ics/@<username>.ics- A channel’s public calendar (RFC 5545). Subscribe with
webcal://openvibe.today/ics/@<username>.ics. GET /e/:id.ics- One event, for "Add to calendar".
GET /ics/<token>.ics- Your private agenda; the link is on your agenda, and a new one replaces it at once.
Events
Today publishes today.event.scheduled, today.event.updated and today.event.cancelled, and listens for live.stream.started and live.stream.ended to mark a stream live and then ended. A refusal is 400 { code: "today.invalid", field, message }; others are today.too_many, today.cross_site, today.not_found.