Wallets and platform admin
Apple's PassKit web service, and the platform back-office.
Neither surface is one you call. They are here so the routes are accounted for.
/api/apple/v1 — Apple's PassKit web service
Apple's own specification, implemented to its shape. iOS calls these; nothing else should. The
credential is the pass's own token, sent as Authorization: ApplePass <token>.
| Method | Path | |
|---|---|---|
POST | /api/apple/v1/devices/{deviceLibraryId}/registrations/{passTypeId}/{serial} | Device registers for updates. Upsert — 201 when new, 200 when already known |
DELETE | /api/apple/v1/devices/{deviceLibraryId}/registrations/{passTypeId}/{serial} | Device unregisters |
GET | /api/apple/v1/devices/{deviceLibraryId}/registrations/{passTypeId} | Serials changed since passesUpdatedSince, or 204 |
GET | /api/apple/v1/passes/{passTypeId}/{serial} | The current pass file. Honours If-Modified-Since with a 304 |
POST | /api/apple/v1/log | Apple posts diagnostics here. Bounded to 20 lines |
The push that wakes a device carries an empty payload — Apple's design. A message reaches the lock screen only by being written into a pass field whose value changed, which is why a notice is a field rather than a payload.
/api/admin — platform back-office
Nubisoft staff, not merchants. A separate credential from everything else, and admin as a code
identifier means this and nothing else.
| Method | Path | |
|---|---|---|
POST | /api/admin/login | |
POST | /api/admin/logout | 204 |
GET | /api/admin/me | |
GET POST | /api/admin/accounts | Platform admin accounts. POST 201 |
GET PUT DELETE | /api/admin/accounts/{id} | |
GET POST | /api/admin/tenants | Onboard a merchant. POST 201, and creates their first branch |
GET PUT DELETE | /api/admin/tenants/{id} | Delete refuses with 409 once the merchant has customers |
GET POST | /api/admin/tenants/{tenantId}/users | The merchant's OWNER/MANAGER/STAFF |
GET PUT DELETE | /api/admin/tenants/{tenantId}/users/{id} | |
GET | /api/admin/tenants/{tenantId}/apple-credential | The merchant's Apple Pass Type ID and its expiry |
POST | /api/admin/tenants/{tenantId}/apple-credential | Upload a .p12. Multipart. 201 |
DELETE | /api/admin/tenants/{tenantId}/apple-credential | 204 |
Every merchant gets their own Apple Pass Type ID, and the certificate expires annually — it has to be in place before that merchant issues anything.