Download OpenAPI specification:Download
Loyalty API for merchants and customer experience partners (CXP) to push loyalty program data to the Vipps MobilePay benefits tab.
This is a write-only, event-based API. All updates are sent as typed events
to a single endpoint. Each event has an action field that determines the
payload schema.
📚 See the API Guide for more information.
Send Authorization: Bearer <token> with a merchant-level access token carrying the loyalty-api:write scope,
obtained from POST:/miami/v1/token with your merchant-level keys. See the
quick start.
The token's merchant identity decides which merchant an event belongs to; it does not appear in the request or response body.
Every request is validated synchronously before it is accepted. The normal outcomes are 202 or a 4xx.
Errors are RFC 9457 problem details (application/problem+json) with type, title, status, detail,
instance, traceId and extraDetails[{name, reason}]; type links to the matching section of the
errors page. Constraints declared on the schemas (maxLength, minimum,
pattern, maxItems) are enforced, plus: timestamp at most 5 minutes in the future, unique id within
*.synced arrays, validUntil not before validFrom, absolute http(s) links, body at most 240 KiB (413), and Content-Type: application/json (415).
Existence of the member, coupon or campaign is never checked at ingress.
Single endpoint for all loyalty program updates. The action field
determines which payload schema is expected.
Events are processed asynchronously. A 202 response means the event
was accepted and will be processed.
| Vipps-System-Name | string <= 30 characters Example: acme-benefits-platform Name of the integrating system. Recommended, not required; helps us debug your integration. |
| Vipps-System-Version | string <= 30 characters Example: 3.1.2 Version of the integrating system. Recommended, not required; helps us debug your integration. |
| Vipps-System-Plugin-Name | string <= 30 characters Example: acme-benefits-connector Name of plugin/module for the integration. Recommended, not required; helps us debug your integration. |
| Vipps-System-Plugin-Version | string <= 30 characters Example: 1.0.0 Version of plugin/module for the integration. Recommended, not required; helps us debug your integration. |
| eventId required | string [ 1 .. 128 ] characters Unique identifier for this event |
| timestamp required | string <date-time> Timestamp for when the event occurred. Must not be more than 5 minutes in the future. |
| action required | string |
required | object (MemberRegisteredPayload) |
{- "eventId": "evt-8a49f7b9-89cb-4e59-9db0-7f2f66a0a151",
- "timestamp": "2025-01-15T10:00:00Z",
- "action": "benefits.member.registered",
- "payload": {
- "contactId": "c1b0dcc3-9878-4079-92aa-f3c00cada3ea",
- "phoneNumber": "+4712345678",
- "joinedOn": "2024-01-15T10:00:00Z",
- "bonusPoints": {
- "balance": 0
}, - "communicationPreferences": {
- "acceptsEmail": true,
- "acceptsSms": true,
- "acceptsPostal": false
}
}
}{- "status": "accepted",
- "eventId": "string"
}