Templates and passes
Two objects shape the whole eldo wallet API:
- The template: the model. It holds the branding and the information shared by every holder. You create it once.
- The pass: one customer’s card. It holds their personal data: name, seat, barcode, balance. You issue one per customer.
Example
A concert is one event template: name, venue, date, official strip, colours. Each attendee gets their own pass: gate, row, seat, barcode.
What lives where
| Information | Template | Pass |
|---|---|---|
| Colours, strip | ✅ | |
| Barcode format | ✅ | |
| Security options (sharing, one-time use…) | ✅ | |
| Terms, contact | ✅ | |
| Holder name and email | ✅ | |
| Barcode value | ✅ | |
| Seat, trip, dates, balance for this customer | ✅ |
Templates by pass type
| Type | Create the template | Issue a pass | Issue in bulk |
|---|---|---|---|
| Coupon | POST/coupons | POST/coupons/{id}/passes/send | (same endpoint, async) |
| Event | POST/events | POST/events/{id}/passes | POST/events/{id}/passes/bulk |
| Transit | POST/transits | POST/transits/{transitId}/passes | POST/transits/{transitId}/passes/bulk |
| Hotel | POST/hotels | POST/hotels/{id}/passes | POST/hotels/{id}/passes/bulk |
Template creation accepts an image (the strip), so it is sent as multipart/form-data. Nested objects (colors, security, locations…) go in as a JSON string in the form field, booleans as "true" / "false". Issuing passes uses application/json. See Common API errors.
What about the loyalty card?
The loyalty card is a special case: one per wallet. Its template is the store card.
- Set its design with PATCH
/store-cards:cardType(STORE_CARDorMEMBER_CARD), programme name, colours, strip, earning unit, displayed fields. - Every customer created with POST
/clientsgets the card (withsendCard, eldo wallet sends them the link). - Customer types sort the card's holders into segments.
Changing a template later
A template change flows to the passes already issued: new strip, and every card changes its look. Do it for a real campaign, not every day.