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.

OperationPurpose
GET /api/partner/studio/shellEligible events for partner navigation.
POST /api/partner/studio/organizationSelect an organisation already available to the actor.
GET /api/partner/eventsRole and event summaries.
POST /api/partner/eventsCreate an event.
PATCH /api/partner/events/renameRename an authorised event.
POST /api/partner/events/duplicateDuplicate an authorised event.
DELETE /api/partner/eventsDelete an event only when its blockers permit it.
GET /api/partner/events/resolveResolve a slug or id inside live membership scope.
GET /api/partner/events/overviewEvent status, counts, and scans by staff member.
GET /api/partner/events/detailsEditable event details and categories.
PATCH /api/partner/events/detailsSave bounded event details, including up to 60 ordered schedule slots.
PATCH /api/partner/events/statusApply a valid draft/published/closed transition.
GET /api/partner/events/ticketsTicket inventory and sold count.
POST /api/partner/events/ticketsAdd a ticket type.
PATCH /api/partner/events/ticketsUpdate eligible ticket inventory.
DELETE /api/partner/events/ticketsDelete an eligible unsold ticket type.
GET /api/partner/events/workshopsWorkshops for an authorised event.
POST /api/partner/events/workshopsAdd a bounded workshop.
GET /api/partner/teamCurrent members and live invitations.
POST /api/partner/team/invitationsInvite admin, staff, or crew by email, optionally with a zoneIds array.
DELETE /api/partner/team/invitationsRevoke a live invitation.
DELETE /api/partner/team/membersRemove a member without violating last-owner rules.
GET /api/partner/invitations/previewActor-aware signed invitation preview.
POST /api/partner/invitations/acceptAccept a named-email invitation.
GET /api/partner/invitations/mineList pending, unexpired crew invitations for the verified signed-in email.
POST /api/partner/invitations/respondAccept 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.

On this page