Organizer API
This document collects and standardizes the API documentation for Organizers.Authentication
- Bearer Token (Sanctum Personal Access Tokens)
- Required scope:
organizer-api - Access restricted to the
organizador_idof the token owner
Supervisor
- Bearer Token (Sanctum Personal Access Tokens)
- Required scope:
supervisor-api - Access to participants of all events
Rate limiting
- RateLimiter:
organizer-api - Default value: 60 req/min, configurable per organizer
Endpoints
GET /api/v1/organizer/participants
Retrieves participants from the authenticated organizer’s events.GET /api/v1/supervisor/participants
Retrieves participants from all events (requires Supervisor or Administrator role). Parameters (query): same as the organizer’s. Cursor pagination (recommended for large volumes):pagination=cursorenables cursor pagination.per_pagepage size (recommended 1000–2000 for 20k+).- Response includes
meta.cursor.next_cursorandmeta.cursor.prev_cursor. - With cursor, only
order_by=idis allowed.
participant_id(optional, integer) - Filter by a specific participant IDevent_id(optional, integer) - Filter by event IDstatus(optional, string) - Filter by participant statusbib(optional, string) - Filter by BIB numberfrom(optional, Y-m-d) - Start date to filter by creation dateto(optional, Y-m-d) - End date to filter by creation datesearch(optional, string) - Search by name, last name, email, phone, locator, notesorder_by(optional, string) - Sort field: id|created_at|status|bib|evento_idorder_dir(optional, string) - Sort direction: asc|descper_page(optional, integer) - Number of items per page (respects configuration limits)
ParticipantResource with meta.filters.
Examples:
Per-organizer configuration
Table:organizer_api_settings
enabledrate_limit_per_minutedefault_page_sizemax_page_sizeip_allowlist
Roadmap
- New endpoints under
/api/v1/organizer/* - Versioning via header or v2 prefix
- Auto-generated OpenAPI/Swagger
POST /api/v1/organizer/participants
Updates participants by id (bulk, batched). Only non-autogenerated fields are allowed.POST /api/v1/supervisor/participants
Updates participants by id (bulk, batched). Only non-autogenerated fields are allowed. Requires Supervisor or Administrator role andsupervisor-api scope.
Bulk upload (best practices):
- Large batches are accepted (e.g. 20k). If the
updatesarray exceeds 1000 elements, the server splits it into chunks and processes them in the background via the queue. - Immediate response with
202 Acceptedand chunk metadata. Check the logs to see progress. - Sizes ≤1000 are processed synchronously with a 200 response.
- Authorization: Bearer Token (Sanctum) with
organizer-apiscope. - Roles: Organizer or Administrator.
- Additional security: Optional
X-Organizer-Idheader to reinforce ownership. - Validations: JSON only; suspicious content is rejected (script, javascript:, on* handlers, data:text/html) in the
competition_resultsanddetailsobjects.
bib(String, optional) - Participant’s BIB numberobservations(String, optional) - General observations about the participantparticipation_notes(String, optional) - Specific participation notescompetition_results(JSON Object, optional) - Competition results in JSON formatdetails(JSON Object, optional) - Additional participant details in JSON format
evento_id, locator, order_id, user_id, created_by, updated_by, deleted_by, status.
Body (JSON):
