Sponsorship and slot projections
A sponsorship record connects sponsor, configured publisher Pricing and slots. It is not the Pricing ID or an individual membership record. All timestamps are stored strings/null with no timezone guarantee. If response mapping fails, it can return an object with missing fields or []. The fields below describe the intended response; a complete object is not guaranteed.
Sponsorship record with membership summary
| Field | Type / presence | Meaning |
|---|---|---|
| id | stored integer | Sponsorship record ID. |
sponsor_id | stored integer / null | Paying/owning sponsor person ID. |
subscription_id | stored integer / null | Configured publisher Pricing ID, not membership ID. |
| title, description | stored string / null | Sponsorship display text. |
is_paying_by_sponsor | boolean after fetch/save | Stored payer-selection flag; not a charge/refund receipt. |
activated_at, expired_at | timestamp / null | Parent stored markers, not proof of every slot’s access. |
created_at, updated_at | timestamp strings | Parent record times. |
subscription_end_date | timestamp / null | First membership found by sponsorship ID; null without one. |
autorenew, is_allowed_next_subscription, is_trial | stored flags / null | First associated membership’s renewal/next-Pricing/trial values, null without one. No ordering or per-slot guarantee. |
Expanded sponsor record
Sponsorship record with membership summary plus:
| Field | Type / presence | Meaning |
|---|---|---|
| sponsor | full user / null | Sponsor serialized without resource argument. |
| subscription | general Pricing / null | Catalog choice, not an attached membership object. |
| slots | array, [] possible | Base slot plus recipient as full user/null. No nested sponsored_subscription inside these embedded slots. |
Base slot
| Field | Type / presence | Meaning |
|---|---|---|
| id | stored integer | Slot ID. |
sponsored_subscription_id | stored integer / null | Parent sponsorship ID. |
recipient_id | stored integer / null | Bound recipient person ID; email alone is distinct. |
recipient_email | stored string / null | Invitation contact. Not verified identity proof. |
activation_code | stored string / null | Slot activation credential; protect separately from session tokens. |
activated_at | timestamp / null | Stored activation marker. |
activated_id | deployment-dependent, optional | Serializer requests this attribute, but pinned model declares no such property; presence/type not established. Never substitute for recipient_id. |
created_at, updated_at | timestamp strings | Slot record times. |
Sponsor slot list/detail/invitation/clear use this base slot: no recipient user or nested parent expansion.
Recipient invitation slot
Base slot plus sponsored_subscription: sponsorship record with membership summary, sponsor and subscription, without slots; null if parent relation is absent. No recipient expansion.
Expanded recipient slot
Base slot plus recipient (full user/null, without resource context) and sponsored_subscription as in the recipient invitation slot (no nested slots). Activation and sponsor-payment-off use this projection.