Partner and studio
Organiser navigation, events, ticket inventory, workshops, and teams.
Every protected request resolves a live owner, admin, or staff membership. Posted organisation or event identifiers never create authority.
| Operation | Purpose |
|---|---|
GET /api/partner/studio/shell | Eligible events for partner navigation. |
POST /api/partner/studio/organization | Select an organisation already available to the actor. |
GET /api/partner/events | Role and event summaries. |
POST /api/partner/events | Create an event. |
PATCH /api/partner/events/rename | Rename an authorised event. |
POST /api/partner/events/duplicate | Duplicate an authorised event. |
DELETE /api/partner/events | Delete an event only when its blockers permit it. |
GET /api/partner/events/resolve | Resolve a slug or id inside live membership scope. |
GET /api/partner/events/overview | Event status, counts, and scans by staff member. |
GET /api/partner/events/details | Editable event details and categories. |
PATCH /api/partner/events/details | Save bounded event details, including up to 60 ordered schedule slots. |
PATCH /api/partner/events/status | Apply a valid draft/published/closed transition. |
GET /api/partner/events/tickets | Ticket inventory and sold count. |
POST /api/partner/events/tickets | Add a ticket type. |
PATCH /api/partner/events/tickets | Update eligible ticket inventory. |
DELETE /api/partner/events/tickets | Delete an eligible unsold ticket type. |
GET /api/partner/events/workshops | Workshops for an authorised event. |
POST /api/partner/events/workshops | Add a bounded workshop. |
GET /api/partner/team | Current members and live invitations. |
POST /api/partner/team/invitations | Invite admin, staff, or crew by email, optionally with a zoneIds array. |
DELETE /api/partner/team/invitations | Revoke a live invitation. |
DELETE /api/partner/team/members | Remove a member without violating last-owner rules. |
GET /api/partner/invitations/preview | Actor-aware signed invitation preview. |
POST /api/partner/invitations/accept | Accept a named-email invitation. |
GET /api/partner/invitations/mine | List pending, unexpired crew invitations for the verified signed-in email. |
POST /api/partner/invitations/respond | Accept or decline a pending crew invitation by id. |
GET /api/studio/stats/{id} | Legacy live registered, distinct check-in, and ticket-revenue counts. |
Missing authentication returns 401; an actor outside the event or organisation
scope returns 403, or 404 where existence itself is tenant-sensitive.
Mutations require an exact configured Origin.
Registration limits
From API 1.3.0, an event capacity or ticket-type quantity of null means unlimited. A positive integer is a finite limit. Do not treat null as zero. Event and ticket-type limits are independent, and both must be unlimited for unrestricted exhibition registration. Workshop creation still requires a positive finite capacity. This requires migration 0006 and deployment of the matching API and clients.
Ticket-type create/update accepts optional publicRegistration. New types default to public; omission on update preserves the current setting. False types remain visible to authorised organisers but are excluded from public ticket listings and self-registration. This setting alone does not verify external payment or issue a delegate ticket.
GET /api/events/organising is the attendee-facing organiser switcher. It
returns only events in the actor's current live organiser scope; Studio routes
remain the place to edit details, schedules, tickets and teams.