Transfer and cancel
Two things that happen to a place after someone registered: somebody else takes it, or nobody does.
Who uses it: an organizer on a person's page (Transfer, Cancel), and a registrant on their own page ("Someone else is coming", "Can't come").
What they came to do: make the list match who is actually coming, without anyone at the gate holding a ticket that quietly stopped working — or a child left outside because the adult on their ticket was cancelled.
What must be true when they leave: every ticket still in someone's hand either works or scans as void and names its replacement; nobody admitted on a companion's ticket has lost it without being told why.
Decided
- Transfer creates the new person in the same registration and household, with the same type, group, days, guardian and companion links, and reissues every live ticket to them (new codes; the old ones scan as void and name the new). The person leaving is marked transferred. The count of people does not change.
- A place already used at a gate (an accept or override) cannot be transferred.
- A registrant can transfer only before the event starts, and only while their page is open for changes.
- Cancel voids the person's tickets and gives the place back. They come off any shared ticket that admitted them.
- A ticket other people are admitted on is never simply voided (I3). It goes to someone else in the household of the type those people need, registered for that day — their own ticket for the day is voided, because the handed-over one admits them too. With nobody like that, the cancellation is refused with the names, and cancelling the whole family together is allowed.
- A registration with nobody left coming is cancelled too.
- The organizer sees what will happen to every ticket before confirming.
Open
- The API endpoints (
attendees/{id}/transfer,…/cancel) arrive with the rest of API v1's registration routes. - Whether a transfer should ask the new person for the form's answers (today it takes name, email, phone, date of birth).
- Emailing the new ticket to the new person is up to the event's
on_ticket_issuedschedule.