extraFieldsJson for organization-specific data. GET endpoints are public and require no authentication. POST and PATCH require a CRUD-level key.
POST /api/v1/participants is idempotent by licenseId. If a participant already exists for the given licenseId, the server returns the existing record with 200 OK instead of creating a duplicate. A new record returns 201 Created.GET /api/v1/participants
Return all participants. Authentication: None requiredstring (UUID)
required
Unique identifier for the participant.
string (UUID)
required
UUID of the license this participant is linked to.
string
required
Human-readable name of the associated license.
string
required
Participant’s first name.
string
required
Participant’s last name.
string
required
Participant’s email address.
string
required
Participant’s phone number.
object
Arbitrary JSON object for organization-specific fields.
string (ISO 8601)
required
Timestamp when the participant was created.
string (ISO 8601)
required
Timestamp of the most recent update.
GET /api/v1/participants/paged
Return a paginated list of participants, sorted bylastName ascending by default.
Authentication: None required
number
default:"0"
Zero-based page number.
number
default:"20"
Number of participants per page.
string
default:"lastName"
Field to sort by, optionally followed by
,asc or ,desc.content, totalElements, totalPages, number, and size.
GET /api/v1/participants/
Return a single participant by UUID. Authentication: None requiredstring (UUID)
required
UUID of the participant to retrieve.
GET /api/v1/participants.
POST /api/v1/participants
Create a new participant. If a participant already exists for the givenlicenseId, the existing record is returned with 200 OK and no data is changed. A new record returns 201 Created.
Required role: CRUD or higher
string (UUID)
required
UUID of the license to associate with this participant. This field drives the idempotency check.
string
required
Participant’s first name. Maximum 120 characters.
string
required
Participant’s last name. Maximum 120 characters.
string
required
Valid email address. Maximum 120 characters. Must match the pattern
[email protected].string
required
Phone number in any format. Maximum 120 characters.
string
JSON string containing arbitrary extra fields. The server parses and stores this as a JSON object.
201 Created for a new participant, or 200 OK when the participant already exists.
PATCH /api/v1/participants/
Update an existing participant. All fields are optional — only the fields you provide are changed. Required role: CRUD or higherstring (UUID)
required
UUID of the participant to update.
string (UUID)
Reassign the participant to a different license.
string
Updated first name. Maximum 120 characters.
string
Updated last name. Maximum 120 characters.
string
Updated email address. Maximum 120 characters.
string
Updated phone number. Maximum 120 characters.
object
Updated extra fields as a JSON object (not a string, unlike the POST body).
200 OK with the updated participant object.