openapi: 3.2.0
info:
title: Vibes Platform Wallet Campaign API
version: 1.0.0
description: Manage mobile wallet campaigns and the individual wallet items (passes) issued from them. A wallet campaign is the container for a single offer, loyalty card, or event ticket program; it owns the iOS and Android pass templates, the messages you send, and the store locations attached to the passes. Items are the per-recipient passes created when end users add a pass to Apple Wallet or Google Wallet.
servers:
- url: https://public-api.vibescm.com
description: North America
- url: https://public-api.eu.vibes.com/
description: EMEA
security:
- basicAuth: []
tags:
- name: Wallet Campaign API
description: Manage mobile wallet campaigns and the individual wallet items (passes) issued from them. A wallet campaign is the container for a single offer, loyalty card, or event ticket program; it owns the iOS and Android pass templates, the messages you send, and the store locations attached to the passes. Items are the per-recipient passes created when end users add a pass to Apple Wallet or Google Wallet.
paths:
/companies/{company_key}/campaigns/wallet:
get:
tags:
- Wallet Campaign API
summary: Get wallet campaigns
parameters:
- name: X-API-Version
in: header
schema:
type: string
default: 1
- name: company_key
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/walletCampaignsResponse'
'404':
description: No mobile wallet campaigns are located.
post:
tags:
- Wallet Campaign API
summary: Create a wallet campaign
description: Create a new mobile wallet campaign. The campaign `type` determines the kind of pass it issues (`offer`, `loyalty`, or `event_ticket`) and cannot be changed after creation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/walletCampaignRequest'
parameters:
- name: X-API-Version
in: header
schema:
type: string
default: 1
- name: Content-Type
in: header
schema:
type: string
example: application/json
required: true
- name: company_key
in: path
schema:
type: string
required: true
description:
Important: Using the "Try It" feature on the righthand console will send an actual API call to our system. This may result in a wallet campaign being created.
responses:
'201':
description: The wallet campaign was created.
content:
application/json:
schema:
$ref: '#/components/schemas/walletCampaignResponse'
/companies/{company_key}/campaigns/wallet/{wallet_id}:
get:
tags:
- Wallet Campaign API
summary: Get a wallet campaign
parameters:
- name: X-API-Version
in: header
schema:
type: string
default: 1
- name: company_key
in: path
schema:
type: string
required: true
- name: wallet_id
in: path
schema:
type: string
description: The `wallet_id` is the SmartLink token for a campaign.
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/walletCampaignResponse'
'404':
description: The `wallet_id` cannot be found.
put:
tags:
- Wallet Campaign API
summary: Update a wallet campaign
description: Update an existing wallet campaign. The campaign `type` is immutable and cannot be changed after creation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/walletCampaignRequest'
parameters:
- name: X-API-Version
in: header
schema:
type: string
default: 1
- name: Content-Type
in: header
schema:
type: string
example: application/json
required: true
- name: company_key
in: path
schema:
type: string
required: true
- name: wallet_id
in: path
schema:
type: string
required: true
description: The `wallet_id` is the SmartLink token for a campaign.
Important: If you are entering a real wallet_id, please note that using the "Try It" feature on the righthand console will send an actual API call to our system. This may result in a wallet campaign being updated.
responses:
'200':
description: The wallet campaign was updated.
content:
application/json:
schema:
$ref: '#/components/schemas/walletCampaignResponse'
'404':
description: The `wallet_id` cannot be found.
/companies/{company_key}/campaigns/wallet/{wallet_id}/items:
get:
tags:
- Wallet Campaign API
summary: Get wallet items
parameters:
- name: X-API-Version
in: header
schema:
type: string
default: 1
- name: company_key
in: path
schema:
type: string
required: true
- name: wallet_id
in: path
schema:
type: string
description: The `wallet_id` is the SmartLink token for a campaign.
required: true
- name: group_code
in: query
description: optional group_code filter
schema:
type: string
- name: expiration_date
in: query
description: optional expiration_date filter
schema:
type: string
- name: provider
in: query
description: optional provider filter
schema:
type: string
- name: field_name
in: query
description: optional first class field filter, where field_name == name of field to filter by
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/walletItemsResponse'
'404':
description: The specified mobile wallet campaigns or wallet items do not exist.
/companies/{company_key}/campaigns/wallet/{wallet_id}/items/{wallet_item_id}:
get:
tags:
- Wallet Campaign API
summary: Get a wallet item
parameters:
- name: X-API-Version
in: header
schema:
type: string
default: 1
- name: company_key
in: path
schema:
type: string
required: true
- name: wallet_id
in: path
schema:
type: string
description: The `wallet_id` is the SmartLink token for a campaign.
required: true
- name: wallet_item_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/walletItemResponse'
'404':
description: The specified `wallet_id` or `wallet_item_id` does not exist.
put:
tags:
- Wallet Campaign API
summary: Update a wallet item
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/walletItemRequest'
parameters:
- name: X-API-Version
in: header
schema:
type: string
default: 1
- name: Content-Type
in: header
schema:
type: string
example: application/json
required: true
- name: company_key
in: path
schema:
type: string
required: true
- name: wallet_id
in: path
schema:
type: string
description: The `wallet_id` is the SmartLink token for a campaign.
required: true
- name: wallet_item_id
in: path
schema:
type: string
required: true
description: Important: If you are entering a real wallet_item_id, please note that using the "Try It" feature on the righthand console will send an actual API call to our system. This may result in a wallet being updated.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/walletItemResponse'
'404':
description: The wallet campaign or the wallet item cannot be found.
components:
schemas:
walletCampaignRequest:
example:
campaign:
name: Spring Sale
description: 20% off all items this spring
type: offer
expiration_date: '2026-06-30T23:59:59Z'
redirect_link: https://example.com/expired
type: object
required:
- campaign
properties:
campaign:
type: object
required:
- name
- type
properties:
name:
type: string
description: Descriptive name of the mobile wallet campaign.
description:
type: string
description: Optional longer description of the campaign.
type:
type: string
enum:
- offer
- loyalty
- event_ticket
description: The kind of pass this campaign issues. One of `offer` (coupon), `loyalty` (store/loyalty card), or `event_ticket`. Immutable after the campaign is created.
expiration_date:
type: string
description: When the campaign expires, in ISO-8601 format. Required for `offer` and `event_ticket` campaigns; optional for `loyalty`.
redirect_link:
type: string
description: Optional URL that end users are redirected to after the campaign has expired.
ignore_unsecure_params:
type: boolean
description: When `true`, only values from a signed (JWT) payload are trusted when personalizing passes; unsigned query parameters are ignored.
security_configuration:
type: object
description: Optional JWT signing configuration used to verify personalization payloads sent on the SmartLink.
properties:
public_key:
type: string
description: Public key used to verify the JWT signature.
jwt_algorithm:
type: string
enum:
- RS256
- HS256
description: Algorithm used to verify the JWT signature. Defaults to `RS256` (asymmetric); `HS256` is symmetric.
walletItemsResponse:
type: array
items:
$ref: '#/components/schemas/walletItemResponse'
walletItemRequest:
type: object
properties:
tokens:
type: object
description: List of key/value pairs of item specific data that can be used to personalize the item.
additionalProperties:
type: string
locations:
type: array
items:
type: object
properties:
latitude:
type: number
longitude:
type: number
relevant_text:
type: string
passbook:
type: object
properties:
notification:
type: string
description: Optional lock screen notification for iOS devices.
google_wallet:
type: object
properties:
messages:
type: object
description: Optional update message for Android devices.
properties:
header:
type: string
body:
type: string
walletCampaignResponse:
type: object
properties:
wallet_id:
type: string
description: The `wallet_id` is the SmartLink token for the campaign. Use it to identify the campaign in all other Wallet API calls.
name:
type: string
description: Descriptive name of the mobile wallet campaign.
description:
type: string
description: Optional longer description of the campaign. Returned only when set.
type:
type: string
enum:
- offer
- loyalty
- event_ticket
description: The kind of pass this campaign issues. One of `offer` (coupon), `loyalty` (store/loyalty card), or `event_ticket`.
smartlink_url:
type: string
description: Public SmartLink URL used to distribute the pass to end users (the "Add to Wallet" link).
url:
type: string
description: REST API reference to this wallet campaign, as a relative URL on the API domain.
redirect_link:
type: string
description: URL that end users are redirected to after the campaign has expired. Returned only when set.
expiration_date:
type: string
description: When the campaign expires, in ISO-8601 format. Returned only when set.
ignore_unsecure_params:
type: boolean
description: When `true`, only values from a signed (JWT) payload are trusted when personalizing passes. Returned only when configured.
security_configuration:
type: object
description: JWT signing configuration used to verify personalization payloads. Returned only when configured.
properties:
public_key:
type: string
description: Public key used to verify the JWT signature. Redacted in responses.
jwt_algorithm:
type: string
enum:
- RS256
- HS256
description: Algorithm used to verify the JWT signature. `RS256` (asymmetric) is the default; `HS256` is symmetric.
created_at:
type: string
description: When the campaign was created, in ISO-8601 format.
updated_at:
type: string
description: When the campaign was last updated, in ISO-8601 format.
walletItemResponse:
type: object
properties:
wallet_item_id:
type: string
description: Unique Wallet Item ID that was specified at creation. This can be system generated or customer supplied in the creation URL.
group_code:
type: string
description: Optional string value to indicate groups of related Wallet items. Can be used for targeted messaging.
campaign_ref:
type: object
description: Reference to the wallet campaign this item belongs to.
properties:
id:
type: string
description: The campaign's `wallet_id` (SmartLink token).
type:
type: string
description: Wallet campaign type.
url:
type: string
description: Reference URL of the wallet campaign, as a relative URL on the API domain.
active:
type: boolean
description: TRUE if wallet item currently installed on person’s device.
tokens:
type: object
description: Key/value pairs of item-specific data used to personalize this pass (referenced by personalization tags in the template).
additionalProperties:
type: string
locations:
type: array
description: Geofenced locations that trigger a lock-screen reminder for this pass.
items:
type: object
properties:
latitude:
type: number
description: Latitude of the location.
longitude:
type: number
description: Longitude of the location.
relevant_text:
type: string
description: Message shown on the device when the user is near the location.
provider:
type: string
description: The wallet platform this item was issued to, for example `passbook` (Apple Wallet) or `google_wallet` (Google Wallet).
passbook:
type: object
description: Apple Wallet (iOS) specific data for this item. Returned only for Apple Wallet passes.
properties:
notification:
type: string
description: Lock-screen notification text shown on the user's iOS device.
google_wallet:
type: object
description: Google Wallet (Android) specific data for this item. Returned only for Google Wallet passes.
properties:
messages:
type: object
description: Update message shown on the user's Android device.
properties:
header:
type: string
description: Message header.
body:
type: string
description: Message body.
created_at:
type: string
description: When the wallet item was created, in ISO-8601 format.
updated_at:
type: string
description: When the wallet item was last updated, in ISO-8601 format.
url:
type: string
description: A reference URL to this wallet item, as a relative URL on the API domain.
walletCampaignsResponse:
type: array
items:
$ref: '#/components/schemas/walletCampaignResponse'
securitySchemes:
basicAuth:
type: http
scheme: basic