Furries PH Docs
Dashboard
Platform API docs

Route Reference

Registration and Attendees

Attendee registration, profiles, fursonas, reservations, waitlist, group registration, and affiliate rewards. Includes generated endpoint contracts from partners-api source.

First created Last updated

apiregistrationattendeesgroup-rego

End-to-end developer runbook

  1. Step 1 - Confirm the API area: Identify the product area, route module, endpoint path, and consumer before writing or calling code.
  2. Step 2 - Read the endpoint contract: Check method, auth, parameters, response, errors, side effects, and related docs.
  3. Step 3 - Prepare authentication and input: Use the right session, bearer token, webhook secret, or internal header. Validate body and query data before sending it.
  4. Step 4 - Make the request: Call the endpoint from the correct origin and environment. Keep credentials and secrets out of logs.
  5. Step 5 - Verify response, side effects, and records: Confirm status code, response shape, database records, external side effects, and audit evidence.
  6. Step 6 - Add tests, docs, and handoff notes: Update route inventory, consumer notes, and certification checks before depending on the change.

Family summary

Attendee registration, profiles, fursonas, reservations, waitlist, group registration, and affiliate rewards.

Modules audited

  • rego.ts: 25 generated endpoint entries.
  • regoProfile.ts: 0 generated endpoint entries.
  • regoAffiliateRewards.ts: 2 generated endpoint entries.
  • regoReservations.ts: 3 generated endpoint entries.
  • waitlist.ts: 10 generated endpoint entries.
  • groupRego.ts: 14 generated endpoint entries.
  • fursonas.ts: 7 generated endpoint entries.

Endpoint table

Member-redemption additions use the signed-in attendee session and return Cache-Control: no-store. GET /api/rego/groups/:id/redemption reads only the caller’s membership and fixed purchased form snapshot. Its status is awaiting_payment, ready, redeemed or cancelled. POST /api/rego/groups/:id/redeem accepts the member’s display/fursona/fursuiting details, sizeSelections, formAnswers, customAnswers and communityJoin. It rejects tier, add-on, identity and payment overrides. Confirmed shared payment, a complete owned profile and required question answers are checked before the existing reserved registration is updated. Repeated completion returns the same registration and does not allocate more stock or charge again.

Group settings expose independent boolean requireSameTier and requireSameAddOns policies, defaulting to false for existing events. The Worker and service-only atomic commands enforce them. Deploy the matching group-redemption migration before these endpoints and clients.

MethodPathModuleAuth scanSource
GET/api/events/:id/group-rego-settingsgroupRego.tsPartner dashboard session required.partners-api/src/routes/groupRego.ts:819
PUT/api/events/:id/group-rego-settingsgroupRego.tsPartner dashboard session required.partners-api/src/routes/groupRego.ts:843
GET/api/events/:id/rego-giftsrego.tsPartner dashboard session required.partners-api/src/routes/rego.ts:2144
POST/api/events/:id/rego-gifts/:giftId/payment-reviewrego.tsPartner dashboard session required.partners-api/src/routes/rego.ts:2166
POST/api/events/:id/reserve-slotregoReservations.tsRego attendee session required.partners-api/src/routes/regoReservations.ts:12
GET/api/events/:id/waitlist-configwaitlist.tsPartner dashboard session required.partners-api/src/routes/waitlist.ts:263
PUT/api/events/:id/waitlist-config/:subjectType/:subjectIdwaitlist.tsPartner dashboard session required.partners-api/src/routes/waitlist.ts:298
POST/api/events/:id/waitlist/process-next/:tierIdwaitlist.tsPartner dashboard session required.partners-api/src/routes/waitlist.ts:388
POST/api/internal/waitlist/expire-offerswaitlist.tsInternal cron secret required.partners-api/src/routes/waitlist.ts:542
GET/api/manage/:id/group-rego-settingsgroupRego.tsPartner dashboard session required.partners-api/src/routes/groupRego.ts:819
PUT/api/manage/:id/group-rego-settingsgroupRego.tsPartner dashboard session required.partners-api/src/routes/groupRego.ts:843
GET/api/manage/:id/rego-giftsrego.tsPartner dashboard session required.partners-api/src/routes/rego.ts:2144
POST/api/manage/:id/rego-gifts/:giftId/payment-reviewrego.tsPartner dashboard session required.partners-api/src/routes/rego.ts:2166
POST/api/manage/:id/reserve-slotregoReservations.tsRego attendee session required.partners-api/src/routes/regoReservations.ts:12
GET/api/manage/:id/waitlist-configwaitlist.tsPartner dashboard session required.partners-api/src/routes/waitlist.ts:263
PUT/api/manage/:id/waitlist-config/:subjectType/:subjectIdwaitlist.tsPartner dashboard session required.partners-api/src/routes/waitlist.ts:298
POST/api/manage/:id/waitlist/process-next/:tierIdwaitlist.tsPartner dashboard session required.partners-api/src/routes/waitlist.ts:388
POST/api/rego-reservations/:id/releaseregoReservations.tsRego attendee session required.partners-api/src/routes/regoReservations.ts:36
GET/api/rego/affiliate-rewardsregoAffiliateRewards.tsRego attendee session required.partners-api/src/routes/regoAffiliateRewards.ts:18
PUT/api/rego/affiliate-rewards/:affiliateId/payoutregoAffiliateRewards.tsRego attendee session required.partners-api/src/routes/regoAffiliateRewards.ts:30
GET/api/rego/eventsrego.tsUnknown from source scan; inspect middleware and handler body before use.partners-api/src/routes/rego.ts:1187
GET/api/rego/events/:slugrego.tsUnknown from source scan; inspect middleware and handler body before use.partners-api/src/routes/rego.ts:1279
GET/api/rego/events/:slug/gift/recipientrego.tsRego attendee session required.partners-api/src/routes/rego.ts:1663
GET/api/rego/fursonasfursonas.tsRego attendee session required.partners-api/src/routes/fursonas.ts:69
POST/api/rego/fursonasfursonas.tsRego attendee session required.partners-api/src/routes/fursonas.ts:90
DELETE/api/rego/fursonas/:idfursonas.tsRego attendee session required.partners-api/src/routes/fursonas.ts:195
PUT/api/rego/fursonas/:idfursonas.tsRego attendee session required.partners-api/src/routes/fursonas.ts:136
DELETE/api/rego/fursonas/:id/refsfursonas.tsRego attendee session required.partners-api/src/routes/fursonas.ts:282
POST/api/rego/fursonas/:id/refsfursonas.tsRego attendee session required.partners-api/src/routes/fursonas.ts:232
PUT/api/rego/fursonas/:id/refs/latestfursonas.tsRego attendee session required.partners-api/src/routes/fursonas.ts:332
POST/api/rego/giftsrego.tsRego attendee session required.partners-api/src/routes/rego.ts:1783
GET/api/rego/gifts/:idrego.tsRego attendee session required.partners-api/src/routes/rego.ts:2113
POST/api/rego/gifts/:id/redeemrego.tsRego attendee session required.partners-api/src/routes/rego.ts:2136
GET/api/rego/gifts/merego.tsRego attendee session required.partners-api/src/routes/rego.ts:2089
POST/api/rego/gifts/quoterego.tsRego attendee session required.partners-api/src/routes/rego.ts:1712
POST/api/rego/groupsgroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:245
GET/api/rego/groups/:idgroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:397
PATCH/api/rego/groups/:id/acceptgroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:552
PATCH/api/rego/groups/:id/cancelgroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:566
PATCH/api/rego/groups/:id/declinegroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:559
POST/api/rego/groups/:id/invitegroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:440
DELETE/api/rego/groups/:id/members/:memberIdgroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:648
PATCH/api/rego/groups/:id/members/:memberIdgroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:598
POST/api/rego/groups/:id/submitrego.tsRego attendee session required.partners-api/src/routes/rego.ts:3328
GET/api/rego/groups/:id/totalsgroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:685
GET/api/rego/groups/mygroupRego.tsRego attendee session required.partners-api/src/routes/groupRego.ts:339
POST/api/rego/internal/archive-expiredrego.tsInternal cron secret required.partners-api/src/routes/rego.ts:4250
POST/api/rego/payment-link-referencerego.tsRego attendee session required.partners-api/src/routes/rego.ts:1482
PUT/api/rego/prefillsrego.tsRego auth optional for new attendee flow.partners-api/src/routes/rego.ts:2270
DELETE/api/rego/prefills/:eventIdrego.tsRego attendee session required.partners-api/src/routes/rego.ts:2476
GET/api/rego/prefills/:eventIdrego.tsRego attendee session required.partners-api/src/routes/rego.ts:2234
POST/api/rego/quoterego.tsRego auth optional for new attendee flow.partners-api/src/routes/rego.ts:1557
POST/api/rego/regosrego.tsRego auth optional for new attendee flow.partners-api/src/routes/rego.ts:2832
GET/api/rego/regos/:refrego.tsRego attendee session required.partners-api/src/routes/rego.ts:2570
GET/api/rego/regos/:ref/walletrego.tsRego attendee session required.partners-api/src/routes/rego.ts:2762
GET/api/rego/regos/merego.tsRego attendee session required.partners-api/src/routes/rego.ts:2502
POST/api/rego/waitlistrego.tsRego auth optional for new attendee flow.partners-api/src/routes/rego.ts:4160
POST/api/rego/waitlist/:entryId/acceptwaitlist.tsRego attendee session required.partners-api/src/routes/waitlist.ts:516
POST/api/rego/waitlist/:entryId/declinewaitlist.tsRego attendee session required.partners-api/src/routes/waitlist.ts:431
GET/api/rego/waitlist/merego.tsRego attendee session required.partners-api/src/routes/rego.ts:4118
GET/api/rego/waitlist/pending-offerwaitlist.tsRego attendee session required.partners-api/src/routes/waitlist.ts:413

Recorded paid values for registration changes

Registration detail totals include API-computed paidItemValues. Refund state includes refundableItemValues with tierAmount, addOnBreakdown and subtotal. These are saved net product values after purchase discounts, excluding captured payment surcharges. Consumers must preserve zero and must not replace missing values with current catalog prices. Reload a refund form when its authoritative basis is unavailable.

Refund approval affects only the selected registration, including a single member of a shared group order. Approval caps historic requests to that member’s remaining paid items and requires confirmed payment for a positive payout. Partial removals and retained-tier rebates reduce the remaining paid-value ledger, so later refunds cannot pay the same value twice. Deleted catalog items retain their receipt values.

Transfers retain the original paid receipt. Upgrades price newly purchased value and preserve original discounts, tax and payment metadata. Accepted upgrade quotes freeze the monetary delta and registration basis. A changed registration or an older quote without a frozen basis returns 409 and requires organizer re-review. Allocation failure leaves an unapplied accepted request that can be retried through the payment action.

These contracts have focused local verification and are included in the Git-linked production release. Live API availability and client assets are verified; authenticated provider settlement remains a separate verification step.

Endpoint contract notes

  1. Action 1 - Verify unknowns: The table is source-generated, but fields marked unknown need manual handler review.
  2. Action 2 - Check source line: Use the source line as the starting point for exact request, response, and side-effect behavior.
  3. Action 3 - Review consumers: Search dashboard, rego, EMS LAN, and webhook callers before changing a path or response.
  4. Action 4 - Update inventory: Regenerate after any route change.

All docs