Register Via Join Link
Register a participant (name + email) and hand over to the booking flow.
First registration under an email returns the personal booking link directly (status “registered”). If the email already belongs to a contact on this campaign — an earlier self-registration or a roster invitee — the link is re-sent to that inbox instead and the response carries only status “email_sent”: knowing an address must never yield that contact’s booking token, which is their bearer credential for booking, their conversation, and their results. Registrations that may create a contact serialize on the interview row.
Email is otherwise unverified — registering under someone else’s unused address creates a contact in their name (equivalent to using any made-up address, bounded by MAX_JOIN_CONTACTS). The “email_sent” branch does reveal that an address is already on the campaign to anyone holding the join link; accepted as the cost of handing first-time registrants their link without an email round-trip.
Authorizations
Clerk-issued RS256 JWT.