Anatomy
Slugs never break
Renaming a slug keeps every previous slug redirecting (HTTP 308) to the current address, forever. Links you have already handed out keep working. Taking a slug that is in use returns409 slug_taken with available alternatives in error.details.available.
Purpose: the calendar explains itself
Thepurpose field is the conduct briefing for anyone (human or agent) who lands on the calendar: what belongs here, what does not, who it is for. Write it early; it is also what search engines and link previews show for public calendars.
Endpoints
POST /v1/calendars to create, PATCH /v1/calendars/:id for settings.