Request to join a public trip
Creates a requested trip participant from the public trip page. The controller only accepts active trips with request_to_join_enabled set in trip settings, then delegates validation and participant creation to TripParticipantService::createJoinRequest. The service requires email, may require standardized donor fields or public signup fields configured for the trip donor form, creates or updates a donor, creates a fundraising entity, and stores the participant with requested status.
Path Parameters
Organization identifier from the public trip URL. Numeric values are treated as client ids; non-numeric values are matched to organization slugs.
Active trip slug within the resolved client. The controller rejects inactive, completed, missing, or request-disabled trips.
Body
Public join-request donor and participant details. Validator rule always requires email; additional required keys are dynamic based on the trip donor form's public standardized fields and required custom fields.
Participant donor email. Validator rule: required|email|max:255. Existing donors are reused by client/email; otherwise the service creates a donor.
255"participant@example.org"
Donor identity type; defaults to INDIVIDUAL when neither type nor donor_type is supplied.
INDIVIDUAL, ORGANIZATION "INDIVIDUAL"
Required when the normalized donor type is ORGANIZATION.
255"Acme Foundation"
Optional revision from join_request_form. If standardized fields are enabled, an outdated supplied revision returns 409 with the current contract.
"current-form-revision"
Optional standardized donor first name stored on the donor and in donor json_fields when provided.
"Sam"
Optional standardized donor last name stored on the donor and in donor json_fields when provided.
"Taylor"
Optional standardized phone value stored on the donor when provided.
"+15551234567"
Optional ISO alpha-2 country code. When standardized fields are enabled and supplied, validator rule: nullable|string|size:2|ValidCountryCode.
2"US"
Optional ISO subdivision code. When standardized fields are enabled and supplied, validator rule: nullable|string|max:10|ValidSubdivisionForCountry.
10"US-CA"
Optional participant fundraising goal. If absent the service uses the trip default individual goal.
2500
Optional participant visibility flag. Defaults to true when omitted.
true
Optional anonymity flag stored on the participant.
false
Optional public participant bio.
"I am raising funds for this service trip."
Optional public intro video URL.
"https://www.youtube.com/watch?v=abc123"
Optional public social links stored directly on the participant.
Optional minor flag. Guardian fields are stored when supplied but are not exposed by public endpoints.
false
Optional guardian name for minor participants.
"Jordan Taylor"
Optional guardian email for minor participants.
"guardian@example.org"
Optional guardian phone for minor participants.
"+15557654321"
Optional guardian relationship for minor participants.
"Parent"